偏微分方程数值解法上机报告(一)一、实验题目:用Ritz-Galerkin方法求解边值问题2u'',01(0)0,(1)1uxxuu的第n次近似()nux,基函数()sin(),1,2,...,ixixin.二、实验目的:通过本次上机实验,理解求解初值问题的变分问题的最重要的近似解法——Ritz-Galerkin方法,以便为学习有限元法打好基础。此外,要熟悉用Matlab解决数学问题的基本编程方法,提高运用计算机解决问题的能力。三、实验代码:n=5;symsx;fori=1:np(i)=sin(i*pi*x);q(i)=-i^2*pi^2*sin(i*pi*x);endfori=1:nb(i)=2*int(p(i),0,1);forj=1:nA(i,j)=int((-q(j)+p(j))*p(i),0,1);endendt=inv(A)*b'四、运行结果:t=2251799813685248/3059521645650671/pi0281474976710656/9481460623939047/pi0281474976710656/43582901062631895/pi五、总结:通过本次上机,我了解了Ritz-Galerkin方程njjpfcjpipanii,...,2,1)),(,())(),((1,明白了用Ritz-Galerkin方法解决边值问题的变分问题的基本原理,并接近一步提高自己的编程动手能力,受益匪浅。偏微分方程数值解法上机报告(二)一、实验题目:用线性元求下列边值问题的数值解2''2sin,0142(0)0,'(1)0yyxxyy二、实验目的:通过本次上机,熟悉和掌握用Galerkin法观点出发导出的求解处置问题数值解的线性有限元法。增强用Matlab解决数学问题的能力。三、实验代码:N=10;a=0;b=1;h=(b-a)/N;p=1;q=pi^2/4;symss;f=2*sin(pi/2*s);X=[0:(b-a)/N:1];B=[];fori=1:NB(i)=h*int(f*(X(i)+h*s)*s,a,b)+h*int(f*(X(i+1)+h*s)*(1-s),a,b);endA=[];fori=1:N-1forj=1:Nifi-j==-1A(i,j)=neiji(1,j,N);elseifi-j==0A(i,j)=neiji(2,j,N);elseifi-j==1A(i,j)=neiji(3,j,N);endendendA(N,N-1)=neiji(3,N-1,N);A(N,N)=neiji(4,N,N);u=inv(A)*B';u'functiont=neiji(index,j,N)p=1;q=pi^2/4;a=0;b=1;h=(b-a)/N;symss;X=[0:h:1];ifindex==1t=int(-p*(X(j)+h*s)/h+h*q*(X(j)+h*s)*(1-s)*s,a,b);elseifindex==2t=int(-p*(X(j)+h*s)/h+h*q*(X(j)+h*s)*s*s,a,b)+int(-p*(X(j+1)+h*s)/h+h*q*(X(j+1)+h*s)*(1-s)*(1-s),a,b);elseifindex==3t=int(-p*(X(j+1)+h*s)/h+h*q*(X(j+1)+h*s)*(1-s)*s,a,b);elseifindex==4t=int(p*(X(10)+h*s)/h+h*q*(X(10)+h*s)*s*s,a,b);end四、运行结果:ans=-0.00860.0029-0.00970.0036-0.01010.0038-0.01010.0037-0.01000.0034五、总结:通过本次上机,使我理解了线性有限元法的基本原理和方法。另外,我也懂得了按Galerkin方法推导有限元方程的优点,它比Ritz法更加方便直接。我也对虚功原理有了初步的认识。因为Galerkin方法基于虚功原理,所以不但可用于保守场问题,也可使用于非保守场即非驻定问题。偏微分方程数值解法上机报告(三)实验题目:用线性元求下列问题的数值解2,1,1(,1)(,1)0,11(1,)1,(1,)0,11xxuxyuxuxxuyuyy(精确到小数点后第四位)实验目的:通过本次上机,掌握二阶椭圆方程的有限元法,进一步熟悉有限元计算的有关问题。实验步骤:1.在matlab中输入pdetool2.在弹出的pdetool工具箱中输入求解区域,在ObjectDialog对话框中输入Left为-1,Bottom为-1,Width为2,Height2,单击OK按钮。3.设置边界条件:左、右边界用Neumann条件,左边界输入g为1,q为0,右边界输入g为0,q为0;上、下边界用Dirichlet条件,输入h为1,r为0,作网格剖分。设置方程类型为椭圆形,键入c=-1,a=0,f=-2,d=0。4.网格剖分单击工具,或者单击Mesh菜单中InitializeMesh选项,可进行初始网格剖分。5.解方程单击工具,显示方程色彩解。如图:6.单击Mesh菜单中ExportMesh,选择默认值。7.输出解的数值单击Solve菜单中ExportSolution…选项,在打开的Export对话框中输入u,单击OK按钮确定。部分节点如下:Columns23through330.80000.60000.40000.20000-0.2000-0.4000-0.6000-0.8000-1.0000-1.0000-1.0000-1.0000-1.0000-1.0000-1.0000-1.0000-1.0000-1.0000-1.0000-0.8000-0.6000Columns45through55-0.8710-0.4358-0.44260.26190.4640-0.68940.82280.69090.04680.3862-0.04690.87410.4026-0.3048-0.48810.2602-0.8257-0.68890.82740.5240-0.0691-0.3720部分数值解如下23:33000000000-0.00240.097645:550.06670.56450.60690.67240.84470.16680.49120.29520.61280.89020.7050总结:有限元计算的有关问题有:把初值问题化为变分形式,对求解域作网络分割,构造基函数(或单元形状函数),形成有限元方程。通过本次实验,我懂得了用有限元方法求解初值问题的基本数学思想和方法,也增强了编程能力,提高了用计算机解决数学问题的兴趣。偏微分方程数值解法上机报告(四)一、实验题目:设G是一个十字形区域,有五个相等的单位正方形组成,用五点差分格式求下列边值问题的数值解:22221,G0,Guuxyu于于二、实验目的:通过本次上机,掌握椭圆型方程的有限差分法,熟悉其计算过程与基本的思想。三、实验代码:h=0.125;A=zeros(6,14);fori=1:14A(1,i)=0;A(6,i)=0;endforj=1:6A(j,1)=0;A(j,14)=0;endA(2,11)=0;A(2,12)=0;A(2,13)=0;A(3,12)=0;A(3,13)=0;A(4,13)=0;n=0;fori=2:5forj=2:9+i-1A(I,j)=h^2/4+(A(i-1,j)+A(I,j-1)+A(i+1,j)+A(I,j+1))/4;n=n+1;endendAN四、运行结果:A=Columns1through80000000000.00390.00490.00510.00520.00520.00520.005200.00490.00630.00680.00690.00690.00690.006900.00510.00680.00730.00750.00750.00750.007500.00520.00690.00750.00760.00770.00770.007700000000Columns9through140000000.00520.005200000.00690.00690.00560000.00750.00750.00720.0057000.00770.00770.00760.00720.00570000000N=42五、总结:合理地作网格剖分是处理好边值问题非常重要的一个步骤和前提,通过本次上机,我懂得了椭圆型方程的有限差分法的基本思想和方法,熟悉了其计算过程和步骤,并且进一步增强了学习的兴趣,提高了编程能力。