《二维波动方程的有限差分法.docx》由会员分享,可在线阅读,更多相关《二维波动方程的有限差分法.docx(13页珍藏版)》请在优知文库上搜索。
1、学生实验报告试疆课程名称偏徽分方程数值解开课试验室数统学院学院数统年级2013专业班信计02班学生姓名学号开课时间2015至2016学年第2学期总成绩老师签名数学与统计学院制开课学院、试验室:数统学院试验时间:2016年6月20日试验项目名称二维波动方程的有限差分法试验项目类型验证演示综合设计其他指导老师曾芳成绩是一.试验目的通过该试验,要求学生驾驭求解二维波动方程的有限差分法,并能通过计算机语言编程实现。二,试验内容考虑如下的初值问题:票=粤+斐,(XMeC=(OjfJW(0,1.4)drxyu(x.y.0)=sinsin11y,w(x.y.)=(-t.y)(0.1)*(1)(x,y,r)=
2、0.(x.y)ece,1.41 .在第三部分写出问题(1)三层显格式。2 .依据你写出的差分格式,编写有限差分法程序。将所写程序放到第四部分。3 .=0.1.r=0.I,分别将f=051.0.1.4时刻的数值解画图显示。4 .该问题的解析解为“(x.y.t)=cosVmsin.rsin11y将四个时刻的数值解的误差画图显示,对数值结果进行简洁的探讨。三.试验原理、方法(算法)、步骤网格划分=0.1.r=().1,故;V=1=10,/=140,hX1=Hi,yf=jh,i,j-0,1,IOti-Ar,=0,1.,14()0在内网点(内,)也),利用二阶中心差商,对(1)建立差分格式:-2m*+m
3、.1.,z-2哈+1吟”-2“:,+j.1.(2)整理得到:口=/(哈J+哈J+H+%)+(2-4r2M哈(3)其中,i,j=12,9,=1,2,.139,网比r=0.1,局部截断误差为“(,+/)。考虑边界条件“(.v,/)=0,(X.y)w次Zr,1.4,差分格式为:脸=$n=Mq=心,n=-=0,140(4)考虑初始条件“(X,1v.0)=sinsin11y.差分格式为:it-i=sin(11xi)sin(11yi)=sin(sin(cjh),/,y=OJ.10(5)若虑初始条件(A-,y,O)=O,(.r,y)(O,1.):利用二阶差商近似:u.,=ojj=10(6)设K=O时刻的点为
4、内点,则满意差分格式(2),代入上式得到:“:/=/(Mj+心./+“+%)+(2-4-用-吗(7)将(6)得到的结果*=0代入中,整理得到:=9W1.J+1C-U+-+心i)+(J2产)(8)综上(2)、(4)、(5)、(8)得到三层显格式的差分格式为:uZ=(心j+.+*T)+(2-4/)-,/J=1.2.9,=1.2.139嗑=&z=;.O=心.n=0/=01./40(9)itj=sin(.r.)sin(11,y7)=sin(-)sin(11jh),i,j=0.1,.1()=2(w.1.u+吟“+-2,)u,7=O1.,10其中亏=0,局部截断误差为。任+的。四.试验环境(所用软件、硬件
5、等)与试验数据文件Mat1.ab%二维波动方程数值计算(关键:怎么运用i,j,k三个指标建立循环)c1.c;%可以将代码换成函数m文件h=0.1.;tau=0.1.*h;%定义步长r=1.auh;/网比x,y1.t=meshgrid(0:h:1.,0:h:1.,0:tau:1.4);%空间网格剖分UU=Cos(sqrt(2)*pi*t).*sin(pi*x).*sin(pi*y);%精确解计算%第一层网点计算u=sin(pi*x).*sin(pi*y);%初始条件UI=U(:,:,D;%因为此时得到的u为11x11x141,故只取第一层%其次层网点计算fori=2:10forj=2:10u(i
6、,j,2)=0.5*r2*(u(i+1.,j,1.)+u(i-1.,j,1.)+u(i,j+1.,1.)+u(i,j-1.,1)+(12*r-2)*u(i,j,1);u(1.1.,:,2)=0;u(:,11,2)=0;endendu2=u(:,:,2);%第3T41层网点计算fork=2:140fori=2:10forj=2:10u(i,j,k+1.)=r2*(u(i+1.,j,k)+u(i-1.,j,k)+u(i,j+1.,k)+u(i,j-1.,k)(2-4*r2)*u(i,j,k)-u(i,jfk-1.);u(1.1.,:,k+1.)=0;u(:1.1.,k+1.)=0;endenden
7、d%结果分析与作图犒哪嬲胱(三1.W嬲黑略用绑%概蹴%wucha=abs(u-uu),求肯定误差矩阵UXUXI41WUChaI=WUCha计算t=0.1时刻的肯定误差矩阵I1.XUwucha2=wucha(:,:,51);%计算t=0.5时刻的肯定误差矩阵I1.x1.1.wucha3=wucha(:,:,101);%计算t=1.0时刻的肯定误差矩阵I1.x1.1.WUCha4=wucha(:,:,141);%计算t=1.4时刻的肯定误差矩阵UXUx0=0:h:1.;y0=0:h:1.;%误差分J%作t=0.1时刻的肯定误差图subp1.ot(2,2,1):mesh(x,y,wucha1.);t
8、itIe(,t=0.1时刻的肯定误差);x1.abe1.(,X变量);y1.abe1.(,y变量);Z1.abe1.C肯定误差值);%作t=0.5时刻的肯定误差图subp1.ot(2,2,2);mesh(x,y,wucha2);tit1.e(t=0.5时刻的肯定误差);XIabe1(X变量);y1.abe1.(y变量);Z1.abe1(肯定误差值);先作t=1.0时刻的肯定误差图subp1.ot(2,2,3):mesh(x,y,wucha3);Iit1.eCt=1.O时刻的肯定误差);x1.abe1.CX变量);y1.abe1.(y变量);Z1.abe1(肯定误差值);学作t=1.4时刻的肯定
9、误差图subp1.ot(2,2,4);mesh(x,y,WUCha4);tit1.e(t=1.4时刻的肯定误差);x1.abe1.(,X变量Ay1.abe1.Cy变量);Z1.abe1.C肯定误差值);%四个时刻数值解、精确燃作t=0.k0.5时刻的数值解与精确解subp1.ot(2,2,1);mesh(x,y,u(:,:,11);%作t=0.1时刻的数值解tit1.e(t=O.1时刻的数值解);x1.abe1.(,X变量);y1.abe1.(y变量):z1.abe1.(,U值);subp1.ot(2,2,2):mesh(x,y,uu(:,:,11);%作t=0.1时刻的精确解tit1.e(t
10、=O.1时刻的精确解x1.abe1.(,X变量);y1.abe1.(,y变量);ZIabeIeU值);嬲作t=0.5时刻的数值解与精确解subp1.ot(2,2,3);nesh(x,y,u(:,:,51);%作t=0.5时刻的数值解tit1.e(,t=0.5时刻的数值解);x1.abe1.CX变量);y1.abe1.(,y变量)jz1.abe1.Cu值);subp1.ot(2,2,4);nesh(x,y,uu(:,:,51);%作t=0.5时刻的精确解tit1.e(t=0.5时刻的精确解);x1.abe1.CX变量);y1.abe1.(,y变量);ZIabe1.cU值);%分别复制粘贴运行嬲嬲
11、WW1.%嬲%w%w三wm%嬲作t=1.O、1.4时刻的数值解与精确解subp1.ot(2,2,1):mesh(x,y,u(:,:,IOD),作t=1.0时刻的数值解tit1.e(I=1.O时刻的数值解);x1.abe1.(,X变量);y1.abe1.(y变量);Z1.abe1(U值);subp1.ot(2,2,2);mcsh(x,y,uu(:,:,101);%作t=1.0时刻的精确解tit1.e(t=1.0时刻的精确解);x1.abe1.CX变量):y1.abe1.(,y变量);ZIabeICU值);般作t=1.4时刻的数值解与精确解subp1.ot(2,2,3);mesh(x,y,u(:,
12、:,MD);%作t=1.4时刻的数值解tit1.e(t=1.4时刻的数值解x1.abe1.CX变量):y1.abe1.(,y变量);ZIabe1.(u值);subp1.ot(2,2,4);mesh(x,y,uu(:,:,14I)作t=1.4时刻的精确解tit1.e(,t=1.4时刻的精确解);x1.abe1.Cx变量);y1.abe1.(y变量);ZIabe1.(u值);五.试验结果与实例分析1、/=0.1Q5、1.OJ.4时刻的数值解与精确解图图1t0.1、0.5时刻的数值解、精确解图2t=1.0,1.4时刻的数值解、精确解注:上两图为四个时刻的数值解与精确解,r=(=().1.vj;(P代
13、表维数),本文/,=2,三层显格式达二阶收敛,不难看出,收敛效果很好,符合理论。下图是四个时刻的肯定误差图像,从图中看出,肯定误差较小,且经过计算得到,收敛阶近似于2,正好符合理论值。图3四个时刻的肯定误差3、四个时刻(t=0.10.5、1.0、1.4)的肯定误差表t=0.1时刻的肯定误差0.00.00.00.00.00.00.00.00.00.00.00000000000000000000000000000000000.00.00.00.00.00.00.00.00.00.00.00000010010020020020020020010010000000010030040010050040040030010000.00.00.00.00.00.00.00.00.00.00.00000020010050060060060050040020000.00.00.00.00.00.00.00.00.00.00.0000002004006007007007006004002