计算机仿真编程求解偏微分方程
求解偏微分方程除了上节介绍的直接使用偏微分方程工具箱外,还可以用编写程序(对于MATLAB仿真,可以编写M文件)的方法求解偏微分方程。
22.2.1双曲型:波动方程的求解
1.求解双曲型方程
下面将讨论标准波动方程的求解问题.波动方程属于双曲型方程,即:
(a、c、d、f是参数).
求解双曲型方程调用形式如下:
(1)u1=hyperbolic(u0,ut0,tlist,b,p,e,t,c,a,f,d)
其中:参数c、a、f、d决定了方程的类型.b代表求解域的边界条件.b可以是边界条件矩阵,也可以是相应的PDE边界条件M文件名.
网格坐标描述矩阵p,e,t是由网格初始化命令得到的:
(2)[p,e,t]=initmesh(g)
其中:g代表求解区域几何形状,是相应的PDE几何分类函数M文件名.
(3)
[p,e,t]=refinemesh(g,p,e,t)
即是迭代过程,得到更细小的网格,使结果更精确.
其中:u0、ut0(ut即是)是初始条件.
tlist是t=0时刻以后均匀的时间矩阵.
2.动画图形显示
为了将所得的解形象地表示出来,还要通过一些动画图形命令.为了加速绘图,首先把三角形网格转化成矩形网格.调用形式如下:
(1)uxy=tri2grid(p,t,u1,x,y)
(2)
[uxy,tn,a2,a3]=tri2grid(p,t,u,x,y)
uxy、p、t、u、x、y意义同上,tn是格点的指针矩阵,a2、a3是内插法的系数.
(3) uxy=tri2grid(p,t,u,tn,a2,a3)
用此命令之前,应先用一个tri2grid命令得出矩阵tn、a2、a3.用此方法可以加快速度.
例22.2.1用MATLAB求解下面波动方程定解问题并动态显示解的分布