单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,精品课件,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,二级,三级,四级,五级,精品课件,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,二级,三级,四级,五级,精品课件,*,题目:用MATLAB求解偏微分方程,主讲人:,班级:,时间:,1,精品课件,题目:用MATLAB求解偏微分方程1精品课件,基础知识预习,微分方程的求解包含,:常微分方程的求解(上节课已经讲过)这里不再赘述。,:偏微分方程的求解(本次教学内容),2,精品课件,基础知识预习微分方程的求解包含2精品课件,偏微分方程概念,偏微分方程(Partial Differential Equation,简称,PDE,)指含有未知函数及其偏导数的方程。,描述自变量、未知函数及其偏导数之间的关系,。,偏微分方程分为,线性偏微分方程式与,非线性偏微分方程式,,常常有几个解而且涉及额外的边界条件,。,常微分方程:,在微分方程中,若自变量的个数只有一个的微分方程。,偏微分方程:,自变量的个数有两个或两个以上的微分方程。,3,精品课件,偏微分方程概念偏微分方程(Partial Different,求解偏微分方程的方法,求解偏微分方程的数值方法:,1.,有限元法(,Finite Element Method,FEM,),-,hp-FEM,2.,有限体积法(,Finite Volume Method,FVM,),3.,有限差分法(,Finite Difference Method,FDM,)。,其它:广义有限元法(,Generalized Finite Element Method,FFEM,)、扩展有限元法(,eXtended Finite Element Method,XFEM,)、无网格有限元法(,Meshfree Finite Element Method,)、离散迦辽金有限元法(,Discontinuous Galerkin Finite Element Method,DGFEM,)等。,4,精品课件,求解偏微分方程的方法求解偏微分方程的数值方法:4精品课件,MATLAB,解偏微分方程,MATLAB提供了两种方法解决PDE 问题,:,pdepe()函数,,它可以求解一般的PDEs,,具有,较大的通用性,但只支持命令行形式调用。,PDE 工具箱,,可以求解特殊PDE 问题,PDEtool 有较大的局限性,比如只能求解二阶PDE 问题,并且不能解决偏微分方程组,但是它提供了GUI界面,从繁杂的编程中解脱出来了,同时还可以通过File-Save As直接生成M代码,使用pdeval()直接计算某个点的函数值,?,5,精品课件,MATLAB解偏微分方程MATLAB提供了两种方法解决PDE,一般偏微分方程组,(PDEs),的,MATLAB,求解,直接求解一般偏微分方程,(,组,),,它的调用格式为,sol=pdepe(m,pdefun,pdeic,pdebc,x,t),问题描述函数,初值条件,边界条件,输出参数,自变量,参数,6,精品课件,一般偏微分方程组(PDEs)的MATLAB求解直接求解一般偏,【输入参数】,(1),pdefun,:是,PDE,的问题描述函数,它必须换成下面的标准形式,PDE,就可以编写下面的入口函数,c,f,s=pdefun(x,t,u,du),m,x,t,就是对应于,(,式,1),中相关参数和自变量,,du,是,u,的一阶导数,由给定的输入变量即可表示出出,c,f,s,这三个函数,7,精品课件,【输入参数】(1)pdefun:是PDE 的问题描述函数,,【输入参数】,(2),pdeic,:是,PDE,的初值条件,必须化为下面的形式,我们使用下面的简单的函数来描述为,u0=pdeic(x),8,精品课件,【输入参数】(2)pdeic:是PDE 的初值条件,必须化,【输入参数】,(3),pdebc,:是,PDE,的边界条件描述函数,必须先化为下面的形式,于是边值条件可以编写下面函数描述为,pa,qa,pb,qb=pdebc(x,t,u,du),其中,a,表示下边界,,b,表示下边界,9,精品课件,【输入参数】(3)pdebc:是PDE的边界条件描述函数,,【输入参数】,(4),m,:就是对应于,(,式,1),中相关参数,x,t,:就是对应于,(,式,1),中自变量,10,精品课件,【输入参数】(4)10精品课件,【,输出参数,】,sol,:是一个三维数组,,sol(:,:,i),表示,ui,的解,换句话说,uk,对应,x(i),和,t(j),时的解为,sol(i,j,k),11,精品课件,【输出参数】sol:是一个三维数组,sol(:,:,i)表示,实例讲解,(题目),例:,12,精品课件,实例讲解(题目)例:12精品课件,初值条件,边界条件,13,精品课件,初值条件边界条件13精品课件,实例讲解,(解法),【解】,第一步,根据,(1)对照给出的偏微分方程,则原方程可以改写为,14,精品课件,实例讲解(解法)【解】第一步根据(1)对照给出的偏微分方程,,输入参数(1),目标PDE函数,%,目标,PDE,函数,function c,f,s=pdefun(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);,15,精品课件,输入参数(1)目标PDE函数%目标PDE函数15精品课,输入参数(2),初值条件,初值条件改写为,%,初值条件函数,function u0=pdeic(x),u0=1;0;,16,精品课件,输入参数(2)初值条件初值条件改写为16精品课件,输入参数(3)边界条件,边界条件改写为,%,边界条件函数,function pa,qa,pb,qb=pdebc(xa,ua,xb,ub,t),%a,表示左边界,,b,表示右边界,pa=0;ua(2);qa=1;0;,pb=ub(1)-1;0;qb=0;1;,17,精品课件,输入参数(3)边界条件边界条件改写为17精品课件,(4),主调函数,clc,x=0:0.05:1;,t=0:0.05:2;,m=0;,sol=pdepe(m,pdefun,pdeic,pdebc,x,t);,figure(,numbertitle,off,name,PDE Demoby Matlabsky),%创建个窗口,窗口名字是name后边的名字NumberTitle,off是关掉默认显示名字。,subplot(211),surf(x,t,sol(:,:,1),%,sol(:,:,i)表示ui的解,title(The Solution of u_1),xlabel(X),ylabel(T),zlabel(U),subplot(212),surf(x,t,sol(:,:,2),%,sol(:,:,i)表示ui的解,title(The Solution of u_2),xlabel(X),ylabel(T),zlabel(U),18,精品课件,(4)主调函数clc18精品课件,19,精品课件,19精品课件,PDEtool,求解特殊,PDE,问题,MATLAB的偏微分工具箱(PDE toolbox)可以比较规范的求解各种常见的二阶偏微分方程,(,特殊二阶的PDE,),20,精品课件,PDEtool求解特殊PDE问题MATLAB的偏微分工具箱(,典型偏微分方程的描述,21,精品课件,典型偏微分方程的描述 21精品课件,22,精品课件,22精品课件,(3)双曲线型偏微分方程的一般形式,23,精品课件,(3)双曲线型偏微分方程的一般形式23精品课件,(4)特征值型偏微分方程的一般形式,注 意它是(1)的变形,不能算独立的一类,24,精品课件,(4)特征值型偏微分方程的一般形式,注 意它是(1),MATLAB,采用有限元的方法求解各种,PDE,MATLAB 为我们提供一个pdetool,(,在command window 中键输pdetool打开,),的交互界面,可以求解二元偏微分u(x1,x2)(注意只能求解二元)。方程的参数由a、c、d和f确定,求解域由图形确定,求解域确定好后,需要对求解域进行栅格化(这个是自动)。,25,精品课件,MATLAB 采用有限元的方法求解各种PDE25精品课件,26,精品课件,26精品课件,27,精品课件,27精品课件,偏微分方程边界条件的描述,Dirichlet(,狄利克莱,),条件,Neumann(,纽曼,),条件,28,精品课件,偏微分方程边界条件的描述Dirichlet(狄利克莱)条件2,29,精品课件,29精品课件,30,精品课件,30精品课件,求解实例,31,精品课件,求解实例 31精品课件,【解】由给定的PDE,可以,得出,d=1,c=1,a=2,f=10,32,精品课件,【解】由给定的PDE,可以得出d=1,c=1,a=2,f=1,step1:,点击工具栏的,【PDE】,按钮,如下输入,PDE,的参数,注意选择,Hyperbolic,33,精品课件,step1:点击工具栏的【PDE】按钮,如下输入PDE的参数,step2:,绘制求解域对坐标轴的操作可以在,【Options】,主菜单中操作,包括设置网格、坐标系范围等,(1)【Options】-Axis Limits,设置如下,34,精品课件,step2:绘制求解域对坐标轴的操作可以在【Options,35,精品课件,35精品课件,(2)点击工具栏上的第三个按钮【绘制椭圆】,任意绘制一个椭圆,双击椭圆,设置如下,36,精品课件,(2)点击工具栏上的第三个按钮【绘制椭圆】,任意绘制一个椭,重复上面的操作,参数如下,37,精品课件,重复上面的操作,参数如下 37精品课件,得到,38,精品课件,得到 38精品课件,(3),在,set formula,中如下输入,“,+”,表示求并集,“,-”,表示求差集,注意没有直接求交接的操作符,39,精品课件,(3)在set formula 中如下输入,“+”表示求并,step3:,边界条件和初值条件,初值条件可以通过,【Solve】-【Parameters】,设置,边值条件设置如下,(1),点击工具栏的第,6,个按钮,【,区域边界,】,,显示如下,40,精品课件,step3:边界条件和初值条件初值条件可以通过【Solve】,(2)【Boundary】-【Remove All Subdomain Borders】,移除所有子域的边界,将得到所有子域合并成一个求解域,(3)【Boundary】-【Secify Boundary Conditons】,设置边界如下,注意我们这里只有,Dirichlet,条件,41,精品课件,(2)【Boundary】-【Remove All Su,step4:,生成使用有限元方法求解方程所需的栅格,点击工具栏的第,8/9,个按钮,对求解域生成栅格,多次点击可以在原来基础上继续细化栅格,直到自己觉得满意,为止,当然可以通过,【Mesh】,主菜单进行精确控制,42,精品课件,step4:生成使用有限元方法求解方程所需的栅格点击工具栏的,step5:求解方程,点解工具栏的第10 个按钮“=”【求解方程】,step6:求解结果绘图,点击第11 个按钮【绘制图形】,里面的选项很丰富,可以绘制等高线等好多,甚至播放动画,具体大家可以自己慢慢摸索,43,精品课件,step5:求解方程43精品课件,动画播放设置:,(1)【Solve】-【Parameters】,设置合适的时间向量,Time,(2)【Plot】-【Parameters】,选中,【Animation】,,点击后面的,【Options】,,设置播放速度和次数,比如,6fps,表示,每秒,6,帧,(3)【Plot】-【Export Movie】,输入动画保存的变量名,比如,M,(4),在,Co