常微分方程的数值解法(欧拉法、改进欧拉法、泰勒方法和龙格-库塔法)

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

[例1]用欧拉方法与改进的欧拉方法求初值问题

223(0)1dy x dx y y ⎧=⎪⎨

⎪=⎩

在区间[0,1]上取0.1h =的数值解。

[解] 欧拉方法的计算公式为

102

2(

)1,0.13n

n n n

x y y h y h y +=+==

现用matlab 编程,程序如下

x0=0; y0=1; x(1)=0.1;

y(1)=y0+0.1*2*x0/(3*y0^2); for n=1:9

x(n+1)=0.1*(n+1);

y(n+1)=y(n)+0.1*2*x(n)/(3*y(n)^2); end ; x y 结果为 x =

Columns 1 through 8

0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000

Columns 9 through 10

0.9000 1.0000 y =

Columns 1 through 8

1.0000 1.0067 1.0198 1.0391 1.0638 1.0932 1.1267 1.1634

Columns 9 through 10

1.2028 1.2443 改进的欧拉方法其计算公式为

(0)

1

21

12(0)2

102()322[]233()1,0.1n n n n

n n n n n n x y y h y x x h y y y y y h ++++⎧=+⎪⎪⎪=++⎨⎪

⎪==⎪⎩

本题的精确解为()y x = 使用excel 表格进行运算,相应如下

现用matlab编程,程序如下

x0=0;

y0=1;

x(1)=0.1;

ya(1)=y0+0.1*2*x0/(3*y0^2);

y(1)=y0+0.05*(2*x0/(3*y0^2)+2*x0/(3*ya^2));

for n=1:9

x(n+1)=0.1*(n+1);

ya(n+1)=ya(n)+0.1*2*x(n)/(3*ya(n)^2);

y(n+1)=y(n)+0.05*(2*x(n)/(3*y(n)^2)+2*x(n+1)/(3*ya(n+1)^2));

end;

x

y

结果为

x =

Columns 1 through 8

0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000

Columns 9 through 10

0.9000 1.0000

y =

Columns 1 through 8

1.0000 1.0099 1.0261 1.0479 1.0748 1.1059 1.1407 1.1783

Columns 9 through 10

1.2183 1.2600

[例2]用泰勒方法解

223(0)1dy x dx y y ⎧=⎪⎨⎪=⎩

分别用二阶、四阶泰勒方法计算点n x =0.1, 0.2, …, 1.0处的数值解,并与精确解进行

比较。

解:二阶泰勒方法

()1

,2n n n n x y h f f y y h f f x y +⎡⎤

⎛⎫∂∂=+++⎢⎥ ⎪∂∂⎝⎭⎣

对于本题

2

23x

f y

=

223223224=33324133f f x x f x y y y y x y y ⎛⎫∂∂++- ⎪∂∂⎝⎭

⎛⎫

=- ⎪⎝⎭

()1

,2

2

3242133n n n n x y n n n n

n h f f y y h f f x y x h

y x h y y +⎡⎤

⎛⎫∂∂=+++⎢⎥

⎪∂∂⎝⎭⎣⎦⎡⎤⎛⎫=++-⎢⎥

⎪⎢⎥⎝⎭⎣⎦

使用excel 表格进行运算,相应结果如下

现用matlab编程,程序如下

x0=0;

y0=1;

x(1)=0.1;

y(1)=y0+0.1/(3*y0^2)*(2*x0+0.1*(1-4*x0^2/(3*y0^3)));

for n=1:9

x(n+1)=0.1*(n+1);

y(n+1)=y(n)+0.1/(3*y(n)^2)*(2*x(n)+0.1*(1-4*x(n)^2/(3*y(n)^3)));

end;

x

y

结果为

x =

Columns 1 through 9

0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000

Column 10

1.0000

y =

Columns 1 through 9

1.0033 1.0132 1.0293 1.0510 1.0776 1.1084 1.1427 1.1799 1.2193

Column 10

1.2606

四阶泰勒方法

()()()()223232

2

25

253625362

358

2358692,324,33242333283916440,93944402939348032748020640,39327x f x y y x f x y y y y x x y y y x y y x x f x y y y y y x x x y y y y x x y y x x x f x y y y y y y =⎛⎫''

=+- ⎪⎝⎭⎛⎫=+- ⎪⎝⎭=-⎛⎫'''

=-+-+ ⎪⎝⎭⎛⎫=-+-+ ⎪⎝⎭=-+⎛⎫

''''=-++- ⎪⎝⎭23

58692

24581148020640239327344012803381x x x x y y y y y x x y y y ⎧

⎪⎪⎪⎪⎪

⎪⎪⎪

⎪⎪⎪⎪

⎪⎪

⎪⎪⎪

⎪⎪⎪⎪⎪

⎪⎛⎫⎪=-++- ⎪⎪⎝⎭⎪

=-+-⎪⎩

()()()()2

2

25

358

(4)

24

58112,3,82

39,480 327,40128043381n n n n n n n n n n n n n n n n

n n n n n n n n n n x y f x y y y f x y x y y y f x y x x y y y f x y x x y y y ⎧'==⎪⎪

⎪'''=⎪

⎪=-⎪⎪

⎪'''

''=⎨⎪⎪=-+⎪⎪'''=⎪⎪⎪=-+-⎪⎩

相关文档
最新文档