此示例演示如何使用solvepde
功能。
标准的二阶波动方程是
要以工具箱的形式表示这一点,请注意solvepde
函数解决了表单的问题
所以标准波动方程有系数 , , ,及 .
c=1;a=0;f=0;m=1;
在正方形区域上解决问题。这个平方
函数描述此几何体。创建一个模型
对象并包括几何图形。打印几何图形并查看边标签。
numberOfPDE=1;模型=createpde(numberOfPDE);几何尺寸(模型,@square);pdegplot(模型,“EdgeLabels”,“开”); ylim([-1.1.1]);轴平等的标题“显示边标签的几何图形”;xlabelx伊拉贝尔y
指定PDE系数。
特定系数(型号,“我是,m,“d”,0,“c”,c,“a”,a,“f”,f);
在左侧(边4)和右侧(边2)设置零Dirichlet边界条件,在顶部(边1)和底部(边3)设置零Neumann边界条件。
applyBoundaryCondition(模型,“迪里克莱”,“边缘”,[2,4],“你”,0);applyBoundaryCondition(模型,“诺依曼”,“边缘”,([1 3]),“g”,0);
创建并查看问题的有限元网格。
生成网格(模型);图pdemesh(模型);ylim([-1.1.1]);轴平等的xlabelx伊拉贝尔y
设置以下初始条件:
.
.
u0=@(位置)atan(cos(pi/2*location.x));ut0=@(位置)3*sin(pi*location.x)。*exp(sin(pi/2*location.y));setInitialConditions(model,u0,ut0);
这种选择避免了将能量放入更高的振动模式,并允许一个合理的时间步长。
将求解时间指定为31个等间距的时间点,从0到5。
n=31;tlist=linspace(0,5,n);
设定SolverOptions.ReportStatistics
的模型
到“开”
.
model.SolverOptions.ReportStatistics=“开”;结果=解算PDE(模型,tlist);
459成功步骤39失败尝试998函数求值1偏导数115 LU分解997线性系统的解万博 尤文图斯
u = result.NodalSolution;
创建动画以可视化所有时间步长的解决方案。通过首先计算时间步长的最大值和最小值来保持固定的垂直比例u
并缩放所有绘图以使用这些
-轴限制。
图umax=max(max(u));umin=min(min(u));对于i=1:n PDE批次(型号,“XYData”,u(:,i),“ZData”,u(:,i),...“ZStyle”,“连续的”,“网格”,“关”);轴([-1 1 -1 1 umin umax]);caxis ([umin umax]);xlabelx伊拉贝尔y兹拉贝尔uM(i)=getframe;结束
要播放动画,请使用电影(M)
指挥部。