基于MATLAB的偏微分方程差分解法_第1页
基于MATLAB的偏微分方程差分解法_第2页
基于MATLAB的偏微分方程差分解法_第3页
基于MATLAB的偏微分方程差分解法_第4页
基于MATLAB的偏微分方程差分解法_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于MATLAB的偏微分方程差分解法学院:核工程与地球物理学院专业:勘查技术与工程班级:1120203学号:姓名:2014/6/11在科学技术各领域中,有很多问题都可以归结为偏微分方程问题。在物理专业的力学、热学、电学、光学、近代物理课程中都可遇见偏微分方程。偏微分方程,再加上边界条件、初始条件构成的数学模型,只有在很特殊情况下才可求得解析解。随着计算机技术的发展,采用数值计算方法,可以得到其数值解。近些年来,求解偏微分方程的数值方法取得进展,特别是有限差分区域分解算法,此类算法的特点是在内边界处设计不同于整体的格式, 将全局的隐式计算化为局部的分段隐式计算。使人从感觉上认为这样得到的解会比全

2、局隐式得到的解的精度差,但大量的数值实验表明事实正好相反,用区域分解算法求得的解的精度更好。差分方法又称为有限差分方法或网格法,是求偏微分方程定解问题的数值解中应用最广泛的方法之一。它的基本思想是:先对求解区域作网格剖分,将自变量的连续变化区域用有限离散点(网格点)集代替;将问题中出现的连续变量的函数用定义在网格点上离散变量的函数代替;通过用网格点上函数的差商代替导数,将含连续变量的偏微分方程定解问题化成只含有限个未知数的代数方程组(称为差分格式)。如果差分格式有解,且当网格无限变小时其解收敛于原微分方程定解问题的解,则差分格式的解就作为原问题的近似解(数值解)。因此,用差分方法求偏微分方程定

3、解问题一般需要解决以下问题:(i)选取网格;(ii)对微分方程及定解条件选择差分近似,列出差分格式;(iii)求解差分格式;(iv)讨论差分格式解对于微分方程解的收敛性及误差估计。下面对偏微分方程具体例题的差分解法作一简要的介绍。§1 双曲型方程中波动方程的有限差分解法。1.1 双曲型的差分方程通过建立网格并求解中心差分方程结果为:其中为了保证上式的稳定性,必须使1. 2 初始值通过联立初始值及边界条件可以得到代入,可简化并得到一个改进的对行2的近似值差分方程:1.3 双曲型方程中波动方程例题的差分解法结果及程序。题:,其中,边界条件为:设解:第一步:通过联立(1)、(2)编写MAT

4、LAB程序如下:%二维双曲型偏微分方程,使用D'Alembert方法function U=hyperbolic(a,b,c,n,m)% a为x的取值范围% b为t的取值范围% c为系数% n为x方向上的节点数% m为t上的节点数h=a/(n-1); % x方向上的步长k=b/(m-1); % t上的步长r=c*k/h;r2=r2;r22=r2/2;s1=1-r2;s2=2-2*r2;U=zeros(n,m);for i=2:(n-1); U(i,1)=sin(pi*h*(i-1); U(i,2)=s1.*sin(pi*h*(i-1)+k*0 . +r22.*(sin(pi*h.*(i-

5、2)+sin(pi*h.*(i); %P116(13) end%差分方程 for j=3:m; for i=2:(n-1); U(i,j)=s2*U(i,j-1)+r2*(U(i+1,j-1)+U(i-1,j-1)-U(i,j-2);%P115(7) end end U=U' %画图figure(1); surf(U);figure(2);contour(U,40);第二步:输入数值并计算a=1;b=0.5;c=4n=11m=11执行hyperbolic(1,0.5,4,11,11);第三步:得出结果并画图入下1.等值线结果图2.三位结果图§1.4 通过MATLAB语言提供了

6、pdepe()函数,可以直接求解一般偏微分方程(组),它的调用格式为:sol=pdepe(m,pdefun,pdeic,pdebc,x,t),具体程序见附录得出的结果为:1.等值线结果图2.三维结果图1.5 结果对比通过编写MATLAB的差分方程程序求取结果和MATLAB自带函数求取结果进行对比,发现这两种方法求得到的结果是非常理想的。§2 抛物线方程中热传导方程的有限差分解法。2.1 抛物线方程的差分方程通过建立网格并求解显示前向差分方程结果为:其中为了保证上式前向差分方程稳定性,当且仅当满足时。这意味着步长必须满足。2.2 抛物线方程中热传导方程例题的差分解法结果及程序。题:其中

7、初始条件为其中边界条件为:解:第一步,分析并带入(3)并编写MATLAB求解程序如下:function U=forwdif(c1,c2,a,b,c,n,m)clch=a/(n-1);k=b/(m-1);r=(c2*k)/(h2);s=1-2*r;U=zeros(n,m);U(1,1:m)=c1;U(n,1:m)=c2;for i=2:n-1U(I,1)=1-abs(2*(i-1)*h-1);% U(I,1)=4*(i-1)*h-4*(i-1)*h)2;endfor j=2:mfor i=2:n-1 U(I,j)=s*U(I,j-1)+r*(U(i-1,j-1)+U(i+1,j-1);enden

8、dU=U;figure(1); surf(U);figure(2);contour(U,30);第二步,代入初始条件以及边界条件:c1=0;c2=0;a=1;b=0.5;c=1;n=6;m=11;执行forwdif(0,0,1,0.1,1,11,11);第三步:得出结果并画图入下1.等值线结果图2.三位结果图§2.3 通过MATLAB语言提供了pdepe()函数,可以直接求解一般偏微分方程(组),它的调用格式为:sol=pdepe(m,pdefun,pdeic,pdebc,x,t),具体程序见附录得出的结果为:1.等值线结果图2.三维结果图2.4 结果对比通过编写MATLAB的差分方

9、程程序求取结果和MATLAB自带函数求取结果进行对比,发现这两种方法求得到的结果是非常相似的,差距不大证明程序编写是成功的。§3 椭圆型方程的有限差分解法。3.1 建立线型方程组3. 2 导数边界条件Neumann边界条件确定了边的法线的方向导数。这里使用零法线导数条件:对于热传导而言,这表示边是热绝缘的而且经过边的热通量为零,从而得到:得出点的Laplace差分方程为:利用差分方程:在(4)上式使用(5)式这个近似值,这结果为:这个公式讲函数联系起来。则Neumann计算空格样板的4种情况如下所示:3. 3 迭代方法根据(4)式和(5)式以如下形式进行迭代处理:式中:这里通过迭代公

10、式(6)右边对所有的内部结点连续执行迭代,直到该式右边余项 “减少到零”(即,)。可以利用逐次超松弛法(SOR)提高所有余项减少到零的收敛速度。其中逐次超松弛法使用迭代公式:这里参数位于范围内。对所有网格点应用上式(8)直到。其中:3.4 椭圆型方程中波动方程例题的差分解法结果及程序。题:用迭代法求解在区域 Lpalace方程的近似解,这里边界值为:解:第一步:通过联立差分方程及迭代方程编写MATLAB程序如下:function U=dirich(a,b,h,tol,maxl)%设DX=DY=h,且存在m,是的a=nh和b=mhn=fix(a/h)+1;m=fix(b/h)+1;ave=(a*

11、(20+180)+b*(80+0)/(2*a+2*b); U=ave*ones(n,m);U(1,1:m)=80;U(n,1:m)=0;U(1:n,1)=20;U(1:n,m)=180;U(1,1)=(U(1,2)+U(2,1)/2;U(1,m)=(U(1,m-1)+U(2,m)/2;U(n,1)=(U(n-1,1)+U(n,2)/2;U(n,m)=(U(n-1,m)+U(n,m-1)/2;w=4/(2+sqrt(4-(cos(pi/(n-1)+cos(pi/(m-1)2);err=1;cnt=0;while(err>tol)&(cnt<=maxl) err=0; for

12、j=2:m-1 for i=2:n-1 relx=w*(U(i,j+1)+U(i,j-1)+U(i+1,j)+U(i-1,j)-4*U(i,j)/4; U(i,j)=U(i,j)+relx; if(err<=abs(relx) err=abs(relx); end end end cnt=cnt+1; relx;endU=flipud(U');figure(1); surf(U);figure(2);contour(U,30);第二步:输入数值并计算a=4; b=4; h=0.5; tol=0.1; maxl=20;执行dirich(4,4,0.5,0.1,20);第三步:得出结

13、果并画图入下1.等值线结果图2.三位结果图§3 附录双曲型及抛物线方程MATLAB语言提供的pdepe()函数程序。%写主函数clcx=linspace(0,1,50);t=linspace(0,0.1,50);m=0;sol=pdepe(m,pdefun,pdeic,pdebc,x,t);u=sol(:,:,1);figure('numbertitle','off','name','PDE Demoby Matlabsky')surf(x,t,u)title('The Solution of u_1')xlabel('X')ylabel('T')zlabel('U')figure(2);contour(u,40);% 目标PDE函数function c,f,s=pdefun (x,t,u,du)%p141-4c=1;f=du;s=0;% %p139-4% c=4;% f=du

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论