《MATLABEuler法解常微分方程》由会员分享,可在线阅读,更多相关《MATLABEuler法解常微分方程(4页珍藏版)》请在金锄头文库上搜索。
1、禁止复制北京石油化工学院Onlyunited Euler 法解常微分方程Euler法解常微分方程算法:Step 1 分别取积分上限、积分下限、步长Step 2 计算hnn判断bn是否成立,成立转到Step 3 ,否则继续进行Step 4 Step 3 计算),(1nnnnyxhfyyStep 4 ),(1nnnnyxhfyyEuler法解常微分方程算程序: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
2、; y=y+h*feval(fun,x,b) x=x+h; end 例 :用 Euler 法计算下列初值问题(取步长h=0.2 ))6.00( 1)0(2x yxyyy输入: fun=inline(-y-x*y2) euler2(fun,1,0 0.6,0.2) 得到:y = 0.8000 y = 0.6144 y = 禁止复制北京石油化工学院Onlyunited 0.4613 指导教师:年月日改进 Euelr 法解常微分方程改进 Euler 法解常微分方程算法:Step 1 分别取积分上限、积分下限、步长Step 2 取一个以h 为步长, a,b 分别为左右端点的矩阵Step 3 (1)做显
3、性Euler 预测),(1nniiyxhfyy(2)将1iy带入),(),( 2h111iiiiiiyxfyxfyyStep 4 计算hnn判断bn是否成立,成立返回Step 3 ,否则继续进行Step 5 Step 5 ),(),( 2h111iiiiiiyxfyxfyy改进 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)-1 w
4、1=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; end x=x 禁止复制北京石油化工学院Onlyunited y=y 例 :用改进 Euler 法计算下列初值问题(取步长h=0.25 ))50( 2)0(2x yxyy输入: fun=inline(-x*y2) gaijineuler2(fun,2,0 5,0.25) 得到:x = 0 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.0000 y = 2.0000 1.8750 1.5939 1.2824 1.0096 0.7932 禁止复制北京石油化工学院Onlyunited 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 指导教师:年月日