matlabeuler法解常微分方程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Euler 法解常微分方程
Euler 法解常微分方程算法:
Step 1 分别取积分上限、积分下限、步长
Step 2计算h n n +=判断b n ≤是否成立,成立转到Step 3,否则继续进行Step 4 Step 3 计算),(1n n n n y x hf y y +=+
Step 4 ),(1n n n n y x hf y y +=+
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 x b=y; y=y+h*feval(fun,x,b) x=x+h; end 例:用Euler 法计算下列初值问题(取步长h=))6.00(1 )0('2 ≤≤⎩⎨⎧=--=x y xy y y 输入:fun=inline('-y-x*y^2') euler2(fun,1,[0 ], 得到: y = y = y = 指导教师: 年 月 日 改进Euelr 法解常微分方程 改进Euler 法解常微分方程算法: Step 1 分别取积分上限、积分下限、步长 Step 2 取一个以h 为步长,a ,b 分别为左右端点的矩阵 Step 3 (1)做显性Euler 预测),(1n n i i y x hf y y +=+ (2)将1+i y 带入)],(),([2 h 111+++++=i i i i i i y x f y x f y y Step 4计算h n n +=判断b n ≤是否成立,成立返回Step 3,否则继续进行Step 5 Step 5 )],(),([2 h 111+++++=i i i i i i y x f y x f y y 改进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 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; end x=x' y=y' 例:用改进Euler 法计算下列初值问题(取步长h=) )50(2 )0('2 ≤≤⎩⎨⎧=-=x y xy y 输入:fun=inline('-x*y^2') gaijineuler2(fun,2,[0 5], 得到: x = y = 指导教师:年月日