微分方程数值解实验报告_第1页
微分方程数值解实验报告_第2页
微分方程数值解实验报告_第3页
微分方程数值解实验报告_第4页
微分方程数值解实验报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

微分方程数值解法课程设计报告班级:姓名:学号:成绩:2017年6月21日摘要自然界与工程技术中的很多现象,可以归结为微分方程定解问题。其中,常微分方程求解是微分方程的重要基础内容。但是,对于许多的微分方程,往往很难得到甚至不存在精确的解析表达式,这时候,数值解提供了一个很好的解决思路。,针对于此,本文对常微分方程数值解法进行了简单研究,主要讨论了一些常用的数值解法,如欧拉法、改进的欧拉法、Runge—Kutta方法、Adams法以及椭圆型方程、抛物型方程的有限差分方法等,通过具体的算例,结合MATLAB求解画图,初步给出了一般常微分方程数值解法的求解过程。同时,通过对各种方法的误差分析,让大家对各种方法的特点和适用范围有一个直观的感受。关键词:微分方程数值解、MATLAB目录摘要 2目录 3第一章常微分方程数值解法的基本思想与原理 41.1常微分方程数值解法的基本思路 41.2用matlab编写源程序 41.3常微分方程数值解法应用举例及结果 5第二章常系数扩散方程的经典差分格式的基本思想与原理 62.1常系数扩散方程的经典差分格式的基本思路 62.2用matlab编写源程序 72.3常系数扩散方程的经典差分格式的应用举例及结果 8第三章椭圆型方程的五点差分格式的基本思想与原理 103.1椭圆型方程的五点差分格式的基本思路 103.2用matlab编写源程序 103.3椭圆型方程的五点差分格式的应用举例及结果 12第四章总结 12参考文献 12第一章常微分方程数值解法的基本思想与原理1.1常微分方程数值解法的基本思路常微分方程数值解法(numericalmethodsforordinarydifferentialequations)计算数学的一个分支.是解常微分方程各类定解问题的数值方法.现有的解析方法只能用于求解一些特殊类型的定解问题,实用上许多很有价值的常微分方程的解不能用初等函数来表示,常常需要求其数值解.所谓数值解,是指在求解区间内一系列离散点处给出真解的近似值.这就促成了数值方法的产生与发展.1.2用matlab编写源程序龙格库塔法:M文件:functiondx=Lorenz(t,x)%r=28,sigma=10,b=8/3

dx=[-10*(x(1)-x(2));-x(1)*x(3)+28*x(1)-x(2);x(1)*x(2)-8*x(3)/3];运行程序:x0=[1,1,1];

[t,y]=ode45('Lorenz',[0,100],x0);

subplot(2,1,1)%两行一列的图第一个

plot(t,y(:,3))xlabel('time');ylabel('z');%画z-t图像subplot(2,2,3)

%两行两列的图第三个

plot(y(:,1),y(:,2))xlabel('x');ylabel('y');%画x-y图像subplot(2,2,4)

plot3(y(:,1),y(:,2),y(:,3))

xlabel('x');ylabel('y');zlabel('z');%画xyz图像欧拉法:h=0.010;a=16;b=4;c=49.52;x=5;y=10;z=10;Y=[];fori=1:800x1=x+h*a*(y-x);y1=y+h*(c*x-x*z-y);z1=z+h*(x*y-b*z);x=x1;y=y1;z=z1;Y(i,:)=[xyz];endplot3(Y(:,1),Y(:,2),Y(:,3));1.3常微分方程数值解法的应用举例及结果应用举例:a=10,b=8/3,0<r<+∞,当1<r<24.74时,Lorenz方程有两个稳定的不动点c(,,r-1)和(-,-,r-1),一个稳定的不动点0=(0,0,0),当r>24.74时,c和都变成不稳定的,此时存在混沌和奇怪吸引子。运行结果:龙格库塔法:欧拉法:第二章常系数扩散方程的经典差分格式的基本思想与原理2.1常系数扩散方程的经典差分格式的基本思路用有限差分法解常系数扩散方程有加权隐式差分格式其中,当时为Crank-Nicolson格式,当时为向后差分格式,当时为向前差分格式。加权隐式格式稳定的条件是,当,无限制,当。加权隐式格式是两层隐式格式,用第n层计算第n+1层节点值的时候,要解线性方程组。2.2用matlab编写源程序M文件:functionM=chase(a,b,c,f)%追赶法求解三对角矩阵方程,Ax=f%a是对角线下边一行的元素%b是对角线元素%c是对角线上边一行的元素%M是求得的结果,以列向量形式保存n=length(b);beta=ones(1,n-1);y=ones(1,n);M=ones(n,1);fori=(n-1):(-1):1a(i+1)=a(i);end%将a矩阵和n对应beta(1)=c(1)/b(1);fori=2:(n-1)beta(i)=c(i)/(b(i)-a(i)*beta(i-1));endy(1)=f(1)/b(1);fori=2:ny(i)=(f(i)-a(i)*y(i-1))/(b(i)-a(i)*beta(i-1));endM(n)=y(n);fori=(n-1):(-1):1M(i)=y(i)-beta(i)*M(i+1);endendM文件:functionoutput=diffuse_equation(a0,t_max,h,tao,D,a1,b1,c1,a2,b2,c2)%一维扩散方程的有限差分法,采用隐式六点差分格式(Crank-Nicolson)%a0:x的最大值%t:_max:t的最大值%h:空间步长%tao:时间步长%D:扩散系数%a1,b1,c1是(x=0)边界条件的系数;a2,b2,c2是(x=a0)边界条件的系数x=0:h:a0;n=length(x);t=0:tao:t_max;k=length(t);P=tao*D/h^2;P1=1/P+1;P2=1/P-1;u=zeros(k,n);%初始条件u(1,:)=exp(x);%求A矩阵的对角元素dd=zeros(1,n);d(1,1)=b1*P1+h*a1;d(2:(n-1),1)=2*P1;d(n,1)=b2*P1+h*a2;%求A矩阵的对角元素下面一行元素ee=-ones(1,n-1);e(1,n-1)=-b2;%求A矩阵的对角元素上面一行元素ff=-ones(1,n-1);f(1,1)=-b1;R=zeros(k,n);%求R%追赶法求解fori=2:kR(i,1)=(b1*P2-h*a1)*u(i-1,1)+b1*u(i-1,2)+2*h*c1;forj=2:n-1R(i,j)=u(i-1,j-1)+2*P2*u(i-1,j)+u(i-1,j+1);endR(i,n)=b2*u(i-1,n-1)+(b2*P2-h*a2)*u(i-1,n)+2*h*c2;M=chase(e,d,f,R(i,:));u(i,:)=M';plot(x,u(i,:));axis([0a00t_max]);pause(0.1)endoutput=u%绘图比较解析解和有限差分解[X,T]=meshgrid(x,t);Z=exp(-pi.*pi.*T).*sin(pi.*X);surf(X,T,Z),xlabel('x'),ylabel('t'),zlabel('u'),title('解析解');%colormap(gray(1));%使图向变为黑色figuresurf(X,T,u),xlabel('x'),ylabel('t'),zlabel('u'),title('有限差分解');%colormap(gray(1));%使图向变为黑色运行程序:%一维扩散方程的有限差分法clear,clc;%定义初始常量a1=1;b1=1;c1=0;a2=1;b2=-1;c2=0;a0=1.0;t_max=8;D=0.1;h=0.1;tao=0.1;%调用扩散方程子函数求解u=diffuse_equation(a0,t_max,h,tao,D,a1,b1,c1,a2,b2,c2);2.3常系数扩散方程的经典差分格式的应用举例及结果应用举例:考虑常系数扩散方程的初边值问题其中,取,为时间步长,为网格比,对不同的时间步长,计算当时初边值问题的解u(0.4,0.4),并且与精确解比较,分析比较结果。运行结果:第三章椭圆型方程的五点差分格式的基本思想与原理3.1椭圆型方程的五点差分格式的基本思路对Laplace方程的第一边值问题利用taylor展开可得逼近它的五点差分格式的差分逼近其中分别为轴和轴步长,边界条件可以由离散可得,当时有。注意五点格式计算节点是由边界的已知节点,计算内部节点,计算时需要联立大型方程组,该方程组可以用迭代法求解。3.2用matlab编写源程序M文件:function[peuxyk]=wudianchafenfa(h,m,n,kmax,ep)%g-s迭代法解五点差分法问题%kmax为最大迭代次数%m,n为x,y方向的网格数,例如(2-0)/0.01=200;%e为误差,p为精确解symstemp;u=zeros(n+1,m+1);x=0+(0:m)*h;y=0+(0:n)*h;fori=1:n+1u(i,1)=sin(pi*y(i));u(i,m+1)=exp(1)*exp(1)*sin(pi*y(i));endfori=1:nforj=1:mf(i,j)=(pi*pi-1)*exp(x(j))*sin(pi*y(i));endendt=zeros(n-1,m-1);fork=1:kmaxfori=2:nforj=2:mtemp=h*h*f(i,j)/4+(u(i,j+1)+u(i,j-1)+u(i+1,j)+u(i-1,j))/4;t(i,j)=(temp-u(i,j))*(temp-u(i,j));u(i,j)=temp;endendt(i,j)=sqrt(t(i,j));ifk>kmaxbreak;endifmax(max(t))<epbreak;endendfori=1:n+1forj=1:m+1p(i,j)=exp(x(j))*sin(pi*y(i));e(i,j)=abs(u(i,j)-exp(x(j))*sin(pi*y(i)));endend运行程序:[peuxyk]=wudianchafenfa(0.1,20,10,10000,1e-6);surf(x,y,u);xlabel('x');ylabel('y');zlabel('u');title('五点差分法解椭圆型偏微分方程');3.3椭圆型方程的五点差分格式的应用举例及结果应用举例:给定如下Lapla

温馨提示

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

评论

0/150

提交评论