微分方程数值解第二次上机报告(共18页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《微分方程数值解第二次上机报告(共18页).doc》由会员分享,可在线阅读,更多相关《微分方程数值解第二次上机报告(共18页).doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上南京信息工程大学 实验(实习)报告实验课程 微分方程数值解 实验名称 第二次实验 实验日期 指导老师 王曰朋 专业 数学与应用数学 年级 姓名 学号 得分 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 实验目的:*对一维抛物方程(热传导方程)数值求解的向前差分格式、向后差分格式、CrankNicolson格式、交替显隐式格式以及跳点格式进行编程。*求解一
2、道抛物方程定解问题实例,编程给出解三维图以及末时刻精确解与数值解比较图。*以理论推导和编程实现分析差分方法分别对空间步长及时间步长的整体误差精度(以向前差分为例)。实验内容:1. 方法编程编程向前差分格式、向后差分格式、CrankNicolson格式、交替显隐式格式以及跳点格式。分别见附录的forward.m文件、backward.m文件、Crank_Nicolson.m文件、AFB.m文件和skip.m文件。以向前差分为例探讨差分方法分别对空间步长及时间步长的收敛阶的程序分别见附录。2. 实例求解求解一个一维热传导方程定解问题实例:用偏微分方程相关知识可以求得其解析解为:解析解参与编程时,其
3、中k取60,可以达到精确解精度要求。分别运行五个差分格式,得出解三维图和末时刻精确解与格式数值解对比图。由于五个格式运行结果无法从肉眼观察出区别,下取向前差分格式运行结果展示。如下图图1、图2和图3。 图1:向前差分求解结果三维图图2:末时刻数值解与精确解比较图3:数值解与精确解比较放大图结果分析:从图1可以看出关于时间逐渐降低,在边界上满足零边界值条件,符合热传导物理规律。从图2可以看出向前差分格式在空间步长时间步长时,有很好的收敛性。末时刻差分方法解与精确解较为贴合。经过多次放大后(如图3)才可以看出细微差别。这是因为此时网格比稳定性条件。而五种方法原理不同,取不同空间步长、时间步长时的收
4、敛性也不同。下面研究这五种方法的收敛阶,以深入研究收敛性。3. 收敛阶理论推导 将方程在节点离散化: (1)时间步长为,空间步长为.*下以向前差分差分格式为例:对充分光滑的解,由Taylor展式:(2) (3) (4)对(2)式移项得: (5)(3)、(4)式相加得:(6)(5)、(6)式带入(1)式得: (7)其中: (8)(7)式舍去即得到逼近(1)式的向前格式差分方程: (9)其中,从(8)式来看,网格化近似后余项对时间步长的局部误差阶为2,对空间步长的局部误差阶为3.于是对时间、空间两种步长的整体误差阶为1和2.4. 收敛阶编程探讨以向前差分格式为例,先固定时间步长,变动空间步长:固定
5、时间步长,取两个空间步长,再计算末时刻相对误差。误差与步长分别取对数后绘图如下。图4:末时刻向前差分方法相对误差随空间步长变化对数-对视图同时计算了这条直线的斜率约为符合理论讨论中的关于空间步长达到2阶收敛精度。再固定空间步长,变动时间步长:固定空间步长,取两个空间步长,再计算末时刻相对误差。误差与步长分别取对数后绘图如下。图5:末时刻向前差分方法相对误差随时间步长变化对数-对视图同时计算了这条直线的斜率约为符合理论讨论中的关于时间步长达到1阶收敛精度。5. 附录所有Matlab程序如下:forward.m文件:clcclearl=1; %参数l的值a=1; %系数a的值tmax=0.1; %
6、t最大值k=0.0002; %时间t增量h=0.02; % x增量s=a(2)*k/(h2); %网格比x=0:h:l;t=0:k:tmax;o=length(x);p=length(t);u=zeros(o,p);X,T=meshgrid(x,t);% u(x,0) 初始层for i=1:o if x(i)=1/2 u(i,1)=2*x(i); else u(i,1)=2-2*x(i); endend% u(0,t)和u(l,t) 边界条件u(1,:)=0;u(o,:)=0;% 向前差分for j=1:(p-1) for i=2:(o-1) u(i,j+1)=s*u(i+1,j)+(1-2*
7、s)*u(i,j)+s*u(i-1,j); endend% 末时刻精确解u_exact=zeros(60,o);for i=1:o for k=1:60 %取60项u_exact(k,i)=8*sin(k*pi/2)*exp(-0.1*(k*pi)2)*sin(k*pi*x(i)/(pi2);u_e(i)=sum(u_exact(:,i); endend% 解三维网格绘图figure()mesh(X,T,u)xlabel(x);ylabel(t);zlabel(u(x,t);title(向前差分求解三维图)% 末时刻解比较figure()plot(x,u(:,p),-) %差分方法求解hold
8、 onplot(x,u_e,-.) %精确解xlabel(x);ylabel(u(x,t);title(末时刻向前差分方法解与精确解比较图)legend(向前差分方法解,精确解(n=60))backward.m文件:clcclearl=1; %参数l的值a=1; %系数a的值tmax=0.1; %t最大值k=0.00004; %时间t增量h=0.01; % x增量x=0:h:l;t=0:k:tmax;o=length(x);p=length(t);u=zeros(o,p);s=a(2)*k/(h2); %网格比N=o-2; %每一层内点个数m,n=meshgrid(x,t);% u(x,0)
9、初始层for i=1:o if x(i)=1/2 u(i,1)=2*x(i); else u(i,1)=2-2*x(i); endend% u(0,t)和u(l,t) 边界条件u(1,:)=0;u(o,:)=0;E=zeros(N,1); %边界不为零在此改动F=zeros(N,1); %隐式方程组右端 先声明%隐式差分方程组系数矩阵AA=zeros(N,N); A(1,1)=1+2*s;A(1,2)=-s;A(N,N)=1+2*s;A(N,N-1)=-s;for i=2:N-1 A(i,i)=1+2*s; A(i,i+1)=-s; A(i,i-1)=-s;end% 对时间层逐层求解for j
10、=1:p-1 F=u(2:N+1,j)+E; %方程组右端更新 u(2:N+1,j+1)=AF;end% 末时刻精确解u_exact=zeros(60,o);for i=1:o for k=1:60 %取60项u_exact(k,i)=8*sin(k*pi/2)*exp(-0.1*(k*pi)2)*sin(k*pi*x(i)/(pi2);u_e(i)=sum(u_exact(:,i); endend% 解三维网格绘图figure()mesh(m,n,u)xlabel(x);ylabel(t);zlabel(u(x,t);title(隐式差分求解三维图)% 末时刻解比较figure()plot(
11、x,u(:,p),-) %隐式差分方法求解hold onplot(x,u_e,-.) %精确解xlabel(x);ylabel(u(x,t);title(末时刻隐式差分方法解与精确解比较图)legend(隐式差分方法解,精确解(n=60))Crank_Nicolson.m文件:clcclearl=1; %参数l的值a=1; %系数a的值tmax=0.1; %t最大值k=0.0002; %时间t增量h=0.02; % x增量x=0:h:l;t=0:k:tmax;o=length(x);p=length(t);u=zeros(o,p);s=a(2)*k/(2*h2); %C-N网格比N=o-2;
12、%每一层内点个数m,n=meshgrid(x,t);% u(x,0) 初始层for i=1:o if x(i)=1/2 u(i,1)=2*x(i); else u(i,1)=2-2*x(i); endend% u(0,t)和u(l,t) 边界条件u(1,:)=0;u(o,:)=0;E=zeros(N,1); %非齐次边界问题 在此改动F=zeros(N,1); %隐式方程组右端 先声明%方程组 隐式一端系数矩阵A A=zeros(N,N); A(1,1)=1+2*s;A(1,2)=-s;A(N,N)=1+2*s;A(N,N-1)=-s;for i=2:N-1 A(i,i)=1+2*s; A(i
13、,i+1)=-s; A(i,i-1)=-s;end%方程组 显式一端系数矩阵T T=zeros(N,N); T(1,1)=1-2*s;T(1,2)=s;T(N,N)=1-2*s;T(N,N-1)=s;for i=2:N-1 T(i,i)=1-2*s; T(i,i+1)=s; T(i,i-1)=s;end% 对时间层逐层求解for j=1:p-1 F=u(2:N+1,j)+E; %方程组右端更新 u(2:N+1,j+1)=inv(A)*T*F;end% 末时刻精确解u_exact=zeros(60,o);for i=1:o for k=1:60 %取60项u_exact(k,i)=8*sin(k
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微分方程 数值 第二次 上机 报告 18
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内