MATLABEuler法解常微分方程

  • 格式:docx
  • 大小:13.16 KB
  • 文档页数:4

下载文档原格式

  / 9
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Euler法解常微分方程

Euler法解常微分方程算法:

Step 1 分别取积分上限、积分下限、步长

Step 2计算判断是否成立,成立转到Step 3,否则继续进行Step 4

Step 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 x

b=y;

y=y+h*feval(fun,x,b)

x=x+h;

end

例:用Euler法计算下列初值问题(取步长h=0.2)

输入:fun=inline('-y-x*y^2')

euler2(fun,1,[0 0.6],0.2)

得到:

y =

0.8000

y =

0.6144

y =

0.4613

指导教师:年月日改进Euelr法解常微分方程

改进Euler法解常微分方程算法:

Step 1 分别取积分上限、积分下限、步长

Step 2 取一个以h为步长,a,b分别为左右端点的矩阵

Step 3 (1)做显性Euler预测

(2)将带入

Step 4计算判断是否成立,成立返回Step 3,否则继续进行Step 5 Step 5

改进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=0.25)

输入:fun=inline('-x*y^2')

gaijineuler2(fun,2,[0 5],0.25)

得到:

x =

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

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

指导教师:年月日禁止复制北京石油化工学院Onlyunited