从写完上一篇常微分方程的求解到现在已经很长时间了,这周也一直忙于报到的各种事宜,无暇坐下来写些东西,趁着这个周末,终于完成了这个姊妹篇。
对于偏微分方程的求解,Matlab提供了两种工具。第一种是pdepe()函数,它的特点是通用性好,不受求解阶次的限制,不足之处是只支持命令行的格式;第二种是PDE工具箱,它的特点是提供了一个GUI界面,简洁易懂可视,可以从枯燥的编程中解脱出来,不足之处是使用有限制,只能求解二阶的PDE,且不支持偏微分方程组的求解。
(1)、首先,我们来介绍pdepe()函数的使用。
pdepe()函数的调用格式为:
sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t)
其中,@pdefun是PDE方程的函数描述,它必须写成下面这种固定的格式:
这样,偏微分方程可以编写下面的函数描述,其入口为
[c,f,s]=pdefun(x,t,u,ux)
其中,pdefun为函数名;m,x,t就是对应于标准格式中的相关参数。
@pdebc是PDE的边界条件描述函数,必须先化成下面的标准形式:
于是边值条件可以编写下面的函数描述为
[pa,qa,pb,qb]=pdebc(x,t,u,du)
其中a表示上边界,b表示下边界。
@pdeic是PDE的初值条件,必须化成下面的形式:
我们使用下面的简单函数来描述为
u0=pdeic(x)
sol是一个三维数组,sol(:,:,i)表示ui的解。
接下来,我们举一个例子来说明pdepe()函数的使用(由于没办法插入公式,截图如下):
经过上面的分析,我们使用如下程序求解:
function pde
%主函数
x=0:0.05:1;
t=0:0.05:2;
m=0;
sol=pdepe(m,@mpde,@mpic,@mpbc,x,t);
surf(x,t,sol(:,:,1))
figure;
surf(x,t,sol(:,:,2))
function
[c,f,s]=mpde(x,t,u,du) %给出偏微分方程的函数描述
c=[1;1];
f=[0.024*du(1);0.17*du(2)];
temp=u(1)-u(2);
s=[-1;1].*(exp(5.73*temp)-exp(-11.46*temp));
function
[pa,qa,pb,qb]=mpbc(xa,ua,xb,ub,t)%边界条件描述
pa=[0;ua(2)];
qa=[1;0];
pb=[ub(1)-1;0];
qb=[0;1];
function u0=mpic(x)
%初值描述
u0=[1;0];
结果如下:
(2)、PDE工具箱的使用
在Matlab的Command Window中键入pdetool即可调出求解界面。
界面求解比较简单,具体的使用方法这里就不做介绍了。
还是老规矩,由于无法插入公式,只能做截图处理,界面比较乱,下面给大家提供本文PDF格式和文中例子M文件的下载:http://ishare./f/61487902.html