苏佳园:二维热传导方程有限差分法的MATLAB实现
第6章 数值举例分析
6.1 算 例
为了便于观察和表示微分方程的解,我们将最终解用图像表示出来。 例6.1 求满足下列条件的二维热传导方程的解:
22??u?u?u??t?0.5(2?2),0?x?5,0?y?5,0?t?1000,?x?y??0?x?5,0?y?5,?u(x,y,0)?0,?u(x,y,t)?x2siny?y2sinx. ???
在MATLAB命令窗口中输入求解程序:
a=0.5;
u_xy0=inline('0','x','y');
u_xyt=inline('x^2*sin(y)-y^2*sin(x)','x','y','t'); D=[0,5,0,5]; T=1000; Mx=50; My=50; N=50;
[u,x,y,t]=sjy(a,D,T,u_xy0,u_xyt,Mx,My,N); mesh(x,y,u) xlabel('x') ylabel('y') zlabel('U') 输出计算结果为:
rx =
1.0000e+003 ry =
1.0000e+003
16
3020100-10-20-30642y0102x354t
此解即为差分方程的近似解。
例6.2 求解如下二维热传导方程
2u?2u??u???t?10(2?2),0?x?2,0?y?4,0?t?500,?x?y??0?x?2,0?y?4,?u(x,y,0)?0,?u(x,y,t)?xsin(?y)-ysin(?x). ???在MATLAB命令窗口中输入求解程序:
a=10;
u_xy0=inline('0','x','y');
u_xyt=inline('x*sin(pi*y)-y*sin(pi*x)','x','y','t'); D=[0,2,0,4]; T=500; Mx=80; My=80; N=40;
[u,x,y,t]=sjy(a,D,T,u_xy0,u_xyt,Mx,My,N);
17
苏佳园:二维热传导方程有限差分法的MATLAB实现
mesh(x,y,u) xlabel('x') ylabel('y') zlabel('t')
输出计算结果为:
rx =
2.0000e+005 ry =
5.0000e+004
420t-2-44321y000.5x1.512
6.2 运行结果分析
利用MATLAB的工具箱PDETOOL求解方程结果为:
18
Time=10 Color: u Height: u252030201010500-10-5-20-10-306420012354-15-20-2515
例6.1精确解
Time=10 Color: u Height: u3422100-2-1-2321000.51.512-3-44
例6.2精确解
对上述数值解和精确解进行比较,将两解得图画在一个坐标面内,可以更加直观的观察图形的区别,若两图形相差比较大则说明此算法还有不对或不完善的地方;若两图形重合度比较高,则说明此算法和编程过程比较好,能真实的反应偏微分方程的
19
苏佳园:二维热传导方程有限差分法的MATLAB实现
解的情况。如下图:
Time=10 Color: u Height: u252030152010105U00-10-5-20-10-30642y001x2354-15-20-25
Time=10 Color: u Height: u3422100-2-1-2321y000.5x1.512-3-44
从上图可以看出结果基本一致,重合度比较高,即说明计算差分方程的的结果比较
20