加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载]Matlab求解微分方程(2)——偏微分方程的求解

(2016-07-26 12:27:52)
标签:

转载

    从写完上一篇常微分方程的求解到现在已经很长时间了,这周也一直忙于报到的各种事宜,无暇坐下来写些东西,趁着这个周末,终于完成了这个姊妹篇。

    对于偏微分方程的求解,Matlab提供了两种工具。第一种是pdepe()函数,它的特点是通用性好,不受求解阶次的限制,不足之处是只支持命令行的格式;第二种是PDE工具箱,它的特点是提供了一个GUI界面,简洁易懂可视,可以从枯燥的编程中解脱出来,不足之处是使用有限制,只能求解二阶的PDE,且不支持偏微分方程组的求解。

   (1)、首先,我们来介绍pdepe()函数的使用。

    pdepe()函数的调用格式为:

           sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t)

    其中,@pdefun是PDE方程的函数描述,它必须写成下面这种固定的格式:

http://s1/mw690/b0ecb51dzx6CubByCS410&690

    这样,偏微分方程可以编写下面的函数描述,其入口为

       [c,f,s]=pdefun(x,t,u,ux)

    其中,pdefun为函数名;m,x,t就是对应于标准格式中的相关参数。

    @pdebc是PDE的边界条件描述函数,必须先化成下面的标准形式:

http://s10/mw690/b0ecb51dzx6CubFfGbf99&690

    于是边值条件可以编写下面的函数描述为

[pa,qa,pb,qb]=pdebc(x,t,u,du)

    其中a表示上边界,b表示下边界。

    @pdeic是PDE的初值条件,必须化成下面的形式:

http://s15/mw690/b0ecb51dzx6CubJhZBc5e&690

    我们使用下面的简单函数来描述为

    u0=pdeic(x)

    sol是一个三维数组,sol(:,:,i)表示ui的解。

 

    接下来,我们举一个例子来说明pdepe()函数的使用(由于没办法插入公式,截图如下):

http://s6/mw690/b0ecb51dzx6CubMwOMd95&690

    经过上面的分析,我们使用如下程序求解:

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];

 

    结果如下:

http://s11/mw690/b0ecb51dzx6CubUE44O9a&690

http://s6/mw690/b0ecb51dzx6CubVggf315&690

   (2)、PDE工具箱的使用

    在Matlab的Command Window中键入pdetool即可调出求解界面。

http://s14/mw690/b0ecb51dzx6CubYeDz78d&690

   界面求解比较简单,具体的使用方法这里就不做介绍了。

 

   还是老规矩,由于无法插入公式,只能做截图处理,界面比较乱,下面给大家提供本文PDF格式和文中例子M文件的下载http://ishare.iask.sina.com.cn/f/61487902.html

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有