这个例子说明了如何用solvepde
函数。
标准的二阶波动方程是
若要在“工具箱”形式中表示此属性,请注意solvepde
功能解决了表单的问题
所以标准的波动方程有系数 , , , 。
c = 1;= 0;f = 0;m = 1;
在平方域上解决问题。的squareg
函数描述了这个几何图形。创建一个模型
对象和包括几何图形。绘制几何图形并查看边缘标签。
numberOfPDE = 1;模型= createpde (numberOfPDE);geometryFromEdges(模型、@squareg);pdegplot(模型,“EdgeLabels”,“上”);ylim ([-1.1 - 1.1]);轴平等的标题“显示边缘标签的几何图形”;包含xylabely
指定PDE系数。
specifyCoefficients(模型,“米”米,' d '0,“c”c“一个”一个,“f”f);
在左侧(边缘4)和右侧(边缘2)设置零狄利克雷边界条件,在顶部(边缘1)和底部(边缘3)设置零诺伊曼边界条件。
applyBoundaryCondition(模型,“边界条件”,“边缘”(2、4),“u”,0);applyBoundaryCondition(模型,“纽曼”,“边缘”3 ([1]),‘g’,0);
创建并查看问题的有限元网格。
generateMesh(模型);图pdemesh(模型);ylim ([-1.1 - 1.1]);轴平等的包含xylabely
设定以下初始条件:
。
。
u0 = @(location) atan(cos(pi/2*location.x));ut0 = @(location) 3*sin(pi*location.x).*exp(sin(pi/2*location.y));setInitialConditions(模型、情况ut0);
这种选择避免了把能量投入到较高的振动模式,并允许一个合理的时间步长。
指定解乘以从0到5的31个等距点。
n = 31;tlist = linspace (0 5 n);
设置SolverOptions.ReportStatistics
的模型
来“上”
。
model.SolverOptions。ReportStatistics =“上”;结果= solvepde(模型、tlist);
459成功步骤39次失败尝试998次函数计算1偏导数115 LU分解线性系统的997个解金宝搏官方网站
u = result.NodalSolution;
创建一个动画来可视化所有时间步骤的解决方案。保持一个固定的垂直比例尺,首先计算的最大值和最小值u
在任何时候,并缩放所有的图来使用它们
设在限制。
图umax = max(max(u));umin = min (min (u));为i = 1:n pdeplot(模型,“XYData”u(:,我),“ZData”u(:,我),“ZStyle”,“连续”,…“网”,“关闭”,“XYGrid”,“上”,“ColorBar”,“关闭”);轴([-1 -1 -1 -1 umin umax]);caxis ([umin umax]);包含xylabelyzlabeluM (i) = getframe;结束
要播放动画,使用电影(M)
命令。