1、禁止复制 北京石油化工学院 OnlyunitedEuler法解常微分方程Euler法解常微分方程算法:Step 1 分别取积分上限、积分下限、步长Step 2计算 判断 是否成立,成立转到 Step 3,否则继续进行 Step 4hnbStep 3 计算 ),(1nyxfyStep 4 nnEuler法解常微分方程算程序:function euler2(fun,y0,A,h)%fun-y%y0-初值%A-x取值范围%a-x左区间端点值%b-x右区间端点值%h-给定步长x=min(A);b=max(A);y=y0;while xb-hb=y;y=y+h*feval(fun,x,b)x=x+h;e
2、nd例:用 Euler法计算下列初值问题(取步长 h=0.2) )6.0(1)0(2xy输入:fun=inline(-y-x*y2)euler2(fun,1,0 0.6,0.2)得到:y =0.8000y =0.6144y =禁止复制 北京石油化工学院 Onlyunited0.4613指导教师: 年 月 日 改进 Euelr法解常微分方程改进 Euler法解常微分方程算法:Step 1 分别取积分上限、积分下限、步长Step 2 取一个以 h为步长,a,b 分别为左右端点的矩阵Step 3 (1)做显性 Euler预测 ),(1nii yxhfy(2)将 带入1iy ,21 iiiiiStep
3、 4计算 判断 是否成立,成立返回 Step 3,否则继续进行 Step 5hnbStep 5 ),(),(11 iiiii yxff改进 Euler法解常微分方程算程序:function gaijineuler2(fun,y0,A,h)%fun-y%y0-初值%A-x取值范围%a-x左区间端点值%b-x右区间端点值%h-给定步长a=min(A);b=max(A);x=a:h:b;y(1)=y0;for i=1:length(x)-1w1=feval(fun,x(i),y(i);y(i+1)=y(i)+h*w1;w2=feval(fun,x(i+1),y(i+1);y(i+1)=y(i)+h*
4、(w1+w2)/2;endx=x禁止复制 北京石油化工学院 Onlyunitedy=y例:用改进 Euler法计算下列初值问题(取步长 h=0.25))50(2)xy输入:fun=inline(-x*y2)gaijineuler2(fun,2,0 5,0.25)得到:x =00.25000.50000.75001.00001.25001.50001.75002.00002.25002.50002.75003.00003.25003.50003.75004.00004.25004.50004.75005.0000y =2.00001.87501.59391.28241.00960.7932禁止复制 北京石油化工学院 Onlyunited0.62820.50370.40970.33790.28240.23890.20430.17650.15380.13520.11960.10660.09550.08610.0779指导教师: 年 月 日