数学与信息科学系实训报告常微分方程初值问题数值解法及其MATLAB实现姓名:学号:专业:信息与计算科学年级:2010级指导教师:朱耀生完成时间:2013年11月25—2013年12月6实验目的:(1)研究满足给定方程的可微函数的数值方法(2)培养matlab编程和上机调试能力实验基本原理和内容:根据给定的初始条件,确定常微分方程惟一解的问题叫常微分方程初值问题。
大多数实际问题难以求得解析解,必须将微分问题离散化,用数值方法求其近似解。
一阶常微分方程的初值问题的提法是,求出函数,使满足条件(1)利用数值方法解问题(1)时,通常假定解存在且惟一,解函数及右端函数具有所需的光滑程度。
数值解法的基本思想是:先取自变量一系列离散点,把微分问题(1)离散化,求出离散问题的数值解,并以此作为微分问题解的近似。
例如取步长>0,以剖分区间[,],令=+,把微分方程离散化成一个差分方程。
以()表微分方程初值问题的解,以表差分问题的解,就是近似解的误差,称为全局误差。
因此,设计各种离散化模型,求出近似解,估计误差以及研究数值方法的稳定性和收敛性等构成了数值解法的基本内容1.欧拉法和后退欧拉法原理:function [x,y]=meuler(df,xspan,y0,h)%用途:改进欧拉公式解常微分方程y'=f(x,y), y(x0)=y0%格式:[xy]=meuler(df,a,b,y0,h) df为函数f(x,y), xspan为求解%区间[x0,xn], y0为初值y(x0), h为步长, [xy]返回节点和数值解矩阵x=xspan(1):h:xspan(2); y(1)=y0;for n=1:(length(x)-1)k1=feval(df,x(n),y(n));y(n+1)=y(n)+h*k1;k2=feval(df,x(n+1),y(n+1));y(n+1)=y(n)+h*(k1+k2)/2;end例题给定的初值问题y′=-y+x+2,0=<x=<1Y(0)=-1,取精确解y(x)=exp(-x)+x后退欧拉法,步长h=0.003, h=0.1求在节点k=1+0.1k (k=1,2,3……10)处的数值解若>>h=0.1;y=-1;x=1;for i=1:20k1=h*oulei_wf(x,y);k2=h*oulei_wf(x+h,y+k1);y=y+0.5*k1+0.5*k2x=x+h;z=ouleij_q(x)t=y-zendz = 4,z = 3.7000,y = -0.6150z = 1.4329, z =1.4329, t = -2.0479 z =3.7150, z =3.4435, y = -0.2571 z =1.5012, z =1.5012, t =-1.7583 z =3.4571, z = 3.2114, y =0.0763 z =1.5725, z =1.5725, t =-1.4962 z =3.2237, z = 3.0013, y =0.3876 z =1.6466, z =1.6466, t =-1.2590 z =3.0124,z =2.8112,y =0.6788z =1.7231,z =1.7231,t =-1.0444 z =2.8212,z = 2.6391,y =0.9518 z =1.8019,z =1.8019,t =-0.8501z = 2.6482,z =2.4834,y =1.2084z =1.8827,z =1.8827, t =-0.6743z =2.4916,z =2.3425, y =1.4501z =1.9653,z =1.9653, t =-0.5152实验结果的分析与研究1.对于欧拉法,步长越小,精度越高,而产生的误差越小。