matlabeuler法解常微分方程

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 =

指导教师:年月日

相关文档
最新文档