《MATLAB Euler法解常微分方程.doc》由会员分享,可在线阅读,更多相关《MATLAB Euler法解常微分方程.doc(4页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、禁止复制 北京石油化工学院 OnlyunitedEuler法解常微分方程Euler法解常微分方程算法:Step 1 分别取积分上限、积分下限、步长Step 2计算判断是否成立,成立转到Step 3,否则继续进行Step 4Step 3 计算Step 4 Euler法解常微分方程算程序: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-h b=y; y=y+h*feval(fun,x,b) x=x+h;end例:用Euler法计算下列初
2、值问题(取步长h=0.2)输入:fun=inline(-y-x*y2) euler2(fun,1,0 0.6,0.2)得到:y = 0.8000y = 0.6144y = 0.4613指导教师: 年 月 日 改进Euelr法解常微分方程改进Euler法解常微分方程算法:Step 1 分别取积分上限、积分下限、步长Step 2 取一个以h为步长,a,b分别为左右端点的矩阵Step 3 (1)做显性Euler预测 (2)将带入Step 4计算判断是否成立,成立返回Step 3,否则继续进行Step 5Step 5 改进Euler法解常微分方程算程序:function gaijineuler2(fu
3、n,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)-1 w1=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*(w1+w2)/2;endx=xy=y例:用改进Euler法计算下列初值问题(取步长h=0.25)输入:fun=inline(-x*y2) gaijineuler2(fun,2,0 5,0.25)得到:x = 0
4、 0.2500 0.5000 0.7500 1.0000 1.2500 1.5000 1.7500 2.0000 2.2500 2.5000 2.7500 3.0000 3.2500 3.5000 3.7500 4.0000 4.2500 4.5000 4.7500 5.0000y = 2.0000 1.8750 1.5939 1.2824 1.0096 0.7932 0.6282 0.5037 0.4097 0.3379 0.2824 0.2389 0.2043 0.1765 0.1538 0.1352 0.1196 0.1066 0.0955 0.0861 0.0779指导教师: 年 月 日 4 日 月 0 0 0. 0 0 0 0 0 . 0 0 00 00 0 0 0 00 0 00 0 00.00 00 0 00 0 0 .00 00 0 .0 00 到 , ( 取(初算 )+ +()+ ) )+, +() ) , = - 0 :)() 步步-点点右-点间 -范取 初- - 0 序程方常 续, 立立是断 带将 预 性( 矩的右分,以个 步步分上积分 法算微法 方微解 日 : 0 000 到 , , ( *- = .=取题初计 ( = =- 0) ) 步给-点端右-点端左-范值-初- - , 序序方常法 计 续否 转立否判 步步分限取别 法算微法方微解 院化石制