41
第第第 第第第第第第第第第第 Numerical Methods for Ordinary Differential Equations 第第第第第第第 1 第第第第第 )( 8.1 ) 2 第第第第第 )( 8.2 )

第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations )

  • Upload
    brad

  • View
    242

  • Download
    2

Embed Size (px)

DESCRIPTION

第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations ). 常微分方程分为 ( 1 )初值问题( 8.1 节 ) ( 2 )边值问题( 8.2 节 ). 8.1 初值问题的数值方法. 一阶常微分方程初值问题的一般形式是:. 称 f(x,y) 在区域 D 上对 y 满足 Lipschitz 条件是指:. - PowerPoint PPT Presentation

Citation preview

Page 1: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

第八章 常微分方程的数值方法( Numerical Methods for Ordinary

Differential Equations )

常微分方程分为( 1 )初值问题( 8.1 节 )( 2 )边值问题( 8.2 节 )

Page 2: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

一阶常微分方程初值问题的一般形式是 :

0

( , ),(1)

( )

{( , ) , }

y f x y a x b

y a y

D x y a x b c y d

8.1 初值问题的数值方法

Page 3: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

称 f(x,y)在区域 D 上对 y 满足Lipschitz条件是指 :

1 2 1 2

1 2

0 . .

( , ) ( , ) ,

[ , ], , [ , ]

L s t

f x y f x y L y y

x a b y y c d

Page 4: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

利用 Picard逼近容易证明 : Th8.1.1 若 f(x,y)在区域 D 上连续 ,且对 y 满足 Lipschitz条件 ,则初值问题 (1) 在 [a,b]上存在唯一的连续可微解 y.

Page 5: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

利用 Gronwall不等式易证解连续依赖于初值条件 :

( )1 2 1 2

Th8.1.2 ( , )

( ; ) ( ; ) .L x a

f x y D

y x s y x s e s s

设 在 上连续,且对y满足Li pschi tz条件,若y(x; s)是初值问题

y=f (x, y), a<x<b

y(a)=s

的解,则有

Page 6: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

定理 8.1.2 的意义在于:若初值问题 (1) ,(2) 中的初始值有一微小扰动,则解的扰动也是微小的,也就是解连续依赖于初始条件.通常将具有这种特性的初值问题称为是适定的.

(稳定的)

Page 7: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

数值解和精确解

用数值方法求解初值问题,不是求出它的解析解或其近似解析式,而是给出它的解在某些离散节点上的近似值

用 y(x)表示问题 (1), (2)的准确解

y(x0), y(x1),y(xN) 表示解 y(x)在节点 x0, x1,…, xN 处的准确值y0,y1,…,y N 表示数值解,即问题 (1), (2)的解 y(x) 在相应节点处的近似值,

Page 8: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

单步法和多步法

单步法:在计算 yi+1 时只利用 y i

多步法:在计算 yi+1 时不仅利用 y i , 还要利用 yi−1, yi−2,…,

k 步法:在计算 yi+1 时要用到 yi,yi−1,…,yi−k+1

显式计算公式可写成 :yk+1=yk+hΦf(xk , yk;h)隐式格式 :yk+1=yk+hΦf ( xk , yk,yk+1;h)它每步求解 yk+1 需要解一个隐式方程

Page 9: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

一 . Euler 方法

0 1 2 1

0

,

, , 1, 2, , .

N N

j

a x x x x x b

b ax x jh h j N

N

8.1.2 单步法

Euler方法是一种最简单的单步法

Page 10: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

0 0

1

( ),

( , ), 0,1, , 1i i i i

y y x

y y hf x y i N

用差商近似导数h

xyxyxy

)()()( 01

0

x0 x1

),()()()( 000001 yxfhyxyhxyxy

)1,...,0(),(1 niyxfhyy iiii

继续这一过程,得到1 0 0 0( , )y y h f x y

记为

从而得到求解初值问题 (1), (2)的公式

Euler公式

Page 11: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

局部截断误差

1

1

( , , ),

( ) [ ( ) ( , ( ), )]

i i i i

i i i i

y y h x y h

y x y x h x y x h

i +1

对于数值方法

:局部截断误差定义为e

定义   在假设 yi = y(xi) ,即第 i 步计算是精确的前提下,考虑的截断误差 Ri = y(xi+1) yi+1 称为局部截断误差 /* local truncation error */ 。

假定“ yi = y(xi)”称为局部化假定

Page 12: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

估计局部截断误差的主要方法是 Taylor 展开法

定义   若某算法的局部截断误差为 O(hp+1) ,则称该算法有 p 阶精度。

Page 13: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

Euler 方法的局部截断误差2

2

31 12

31 2

1( ) ( ) ( ) ( ) ( ), ,

3!

( ) ( ) ( , ( )) ( ) ( )

hi i i i i i i i

hi i i i i

y x y x hy x y x h y x x

y x y x hf x y x y x O h

2

1 1 1

32

( )

[ ( ) ( ) ( ) ( )] [ ( , )]

i i i

hi i i i i i

e y x y

y x hy x y x O h y hf x y

)()( 32

2

hOxy ih 欧拉法具有 1 阶精度。

Page 14: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

二 . 改进的 Euler 方法

1

1

1 1

1

1 1 1

( ) ( ) ( , ( ))

[ ( , ( )) ( , ( ))]2

( , ),

[ ( , ) ( , ),2

0,1, , 1

i

i

x

i i x

i i i i

i i i i

i i i i i i

y x y x f x y x dx

hf x y x f x y x

y y hf x y

hy y f x y f x y

i N

因为

得到

Page 15: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

改进的 Euler 方法的局部截断误差

2

1

3

( , )

( ) ( ) ( , ( )) [ ( , ( ))2

( , ( )) ( , ( ))] ( )

x y x y

i i i i x i i

y i i i i

y f x y

y f f y f f f

hy x y x hf x y x f x y x

f x y x f x y x O h

Page 16: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

1

2

2

3

[ ( , ) ( , ) ( , )2

( , ) ( , ) ( )]

( , ) [ ( , ) ( , ) ( , )]2

( ).

i i i i i i x i i

i i y i i

i i i x i i i i y i i

hy y f x y f x y hf x y

hf x y f x y O h

hy hf x y f x y f x y f x y

O h

Eul er对于改进的 方法

Page 17: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

8.1.2 一阶常微分方程初值问题的Runge-Kutta 方法

考虑一阶常微分方程初值问题

0

( , ), ,

( ) ,

y f x y a x b

y a y

Page 18: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

1

1( ) ( ) ( , ( ))

( ) ( , ( ))

i

i

x

i i x

i

y x y x f x y x dx

y x hf y

1

( ) ( , ( ))n

i j i j i jj

y x h b f x c h y x c h

1

1n

jj

b

将区域 [a,b] 进行分划:0 , , 1, 2,..., .jx a x a jh j N

b ah

N

称为步长

Page 19: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

1 1 1

2 2 2

( , ( ))

( , ( ))

......

( , ( )).

i i

i i

n i n i n

k f x c h y x c h

k f x c h y x c h

k f x c h y x c h

( , ( ))

( , ( ) ( ))

( , ( ) ( , ( )))

j i j i j

i j i j i

i j i j i i

k f x c h y x c h

f x c h y x hc y x

f x c h y x hc f x y x

1

1

( , )j

i j i jm mm

f x c h y h a k

-1

1

ja cjm j

m

Page 20: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

11

1

1

1

,

( , ),

( , ), 2,3,...,

n

i i j jj

i i

j

j i j i jm mm

y y h b k

k f x y

k f x c h y h a k j n

n级显式 Runge-Kutta方法

1

1

j

jm jm

a c

Page 21: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

二级 Runge-Kutta 方法取 n=2

1 1 1 2 2

1

2 2 2 1

( ),

( , ),

( , ).

i i

i i

i i

y y h b k b k

k f x y

k f x c h y c hk

( , ), ( , ), ( , ),

( , ), ( , ), ( , ),

i i x x i i y y i i

xx xx i i yy yy i i xy xy i i

f f x y f f x y f f x y

f f x y f f x y f f x y

Page 22: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

由此得

1

2 2 2 1

22 1

2 31 1 2 2 2 1

,

( , )

( , ) ( ) ( ),

( ) ( ) ( )

i i

i i x y

i i x y

k f

k f x c h y c hk

f x y c h f k f O h

y y b b hf c b h f k f O h

Page 23: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

另一方面

23

1

23

( , ) , ,

( ) ( ) ( ) ( ) ( )2

( ) ( )2

i i x y

i i i i

i x y

y f x y f y f f f

hy x y x hy x y x O h

hy hf f f f O h

Page 24: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

为使局部截断误差为 ,应取

1 2

2 2

1

1

2

b b

c b

3( )O h

Page 25: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

改进的 Euler 方法

• 取2 1 2

1, 1

2b b c

1 1 2

1

2 1

( / 2 / 2),

( , ),

( , ),

0,1,..., 1.

i i

i i

i i

y y h k k

k f x y

k f x h y hk

i N

Page 26: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

中点方法

取 2 1 2

11, 0,

2b b c

1 2

1

2 1

,

( , ),

( , ),2 2

0,1,..., 1.

i i

i i

i i

y y hk

k f x y

h hk f x y k

i N

Page 27: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

二阶 Heun 方法

取 2 1 2

3 1 2, ,

4 4 3b b c

1 1 2

1

2 1

1 3( ),4 4

( , ),

2 2( , ),

3 30,1,..., 1.

i i

i i

i i

y y h k k

k f x y

h hk f x y k

i N

Page 28: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

二级 Runge-Kutta 方法不超过二阶

• 记

• 则

2, 2x y xx xy yyF f f f G f f f f f

2 2 32 2 2

1( )

2k f c hF c h G O h

Page 29: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

• 因此局部截断误差只能达到

2 2 3 41 1 2 2 2 2 2

1( ) ( ),

2i iy y b b hf b c h F b c h G O h

2 34

1

2 34

( ) ( ) ( ) ( ) ( ) ( )2! 3!

( ) ( ).2 6

i i i i i

i y

h hy x y x hy x y x y x O h

h hy hf F G f F O h

3( ).O h

Page 30: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

三级 Runge-Kutta 方法

取 n=3

1 1 1 2 2 3 3

1

2 2 2 1

3 3 31 1 32 2

3 31 32

( ),

( , ),

( , ),

( , ),

.

i i

i i

i i

i i

y y h b k b k b k

k f x y

k f x c h y c hk

k f x c h y a hk a hk

c a a

Page 31: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

记 2, 2x y xx xy yyF f f f G f f f f f

2 2 2 1

2 2 32 2

( , )

1( )

2

i ik f x c h y c hk

f c hF c h G O h

31 1 32 2

2 2 33 2 32 2 32

1( )

2

a k a k

c f c a hF c a h G O h

Page 32: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

3 3 31 1 32 2

3 31 1 32 2

2 23 3 31 1 32 2

2 331 1 32 2

2 2 33 2 32 3

( , )

[ ( ) ]

1[ 2 ( )

2

( ) ] ( )

1( ) ( )

2

i i

x y

xx xy

yy

y

k f x c h y a hk a hk

f h c f a k a k f

h c f c a k a k f

a k a k f O h

f c hF h c a F f c G O h

Page 33: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

• 又由于

21 1 2 3 2 2 3 3

3 2 2 43 2 32 2 2 3 3

( ) ( )

1[2 ( ) ] ( ).

2

i i

y

y y b b b hf b c b c h F

h b c a Ff b c b c G O h

2 34

1( ) ( ) ( ),2 6i i y

h hy x y hf F G f F O h

Page 34: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

因此要使局部截断误差为 O(h4) ,必须

1 2 3

2 2 3 3

2 22 2 3 3

3 2 32

1,

1/ 2,

1/ 3,

1/ 6.

b b b

b c b c

b c b c

b c a

Page 35: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

Kutta 方法

取 1 2 3 2 3

32 31

1/ 6, 2 / 3, 1/ 6, 1/ 2, 1,

2, 1

b b b c c

a a

1 1 2 3

1

2 1

3 1 2

1 2 1( ),6 3 6

( , ),

1 1( , ),

2 2( , 2 ).

i i

i i

i i

i i

y y h k k k

k f x y

k f x h y hk

k f x h y hk hk

Page 36: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

三阶 Heun 方法

• 取 1 2 3 2

3 32 31

1/ 4, 0, 3 / 4, 1/ 3,

2 / 3, 2 / 3, 0

b b b c

c a a

1 1 3

1

2 1

3 2

1 3( ),4 4

( , ),

1 1( , ),

3 32 2

( , ).3 3

i i

i i

i i

i i

y y h k k

k f x y

k f x h y hk

k f x h y hk

Page 37: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

三级 Runge-Kutta 方法不超过三阶

• 完全类似于二级 Runge-Kutta 方法的分析 将 和 都展开到 项 易证 三级 Runge-Kutta 方法的局部截断误差只能达到4( ).O h

1iy 1( )iy x 4h

,,

Page 38: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

四级 R-K 方法

取 n=4

1 1 1 2 2 3 3 4 4

1

2 2 2 1

3 3 31 1 32 2

4 4 41 1 42 2 43 3

3 31 32 4 41 42 43

( ),

( , ),

( , ),

( , ),

( , ),

, .

i i

i i

i i

i i

i i

y y h b k b k b k b k

k f x y

k f x c h y c hk

k f x c h y a hk a hk

k f x c h y a hk a hk a hk

c a a c a a a

Page 39: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

2 2 3

31 32 3 41 42 43 4

1 2 3 4 2 2 3 3 4 4

2 2 2 3 3 32 2 3 3 4 4 2 2 3 3 4 4

3 2 32 4 2 42 3 43

2 2 23 32 4 42 43

3 2 3 32 4 4 2 42 3 43

4 2

, ,

1, 1/ 2,

1/ 3, 1/ 4,

( ) 1/ 6,

( ) 1/12,

( ) 1/ 8,

a a c a a a c

b b b b b c b c b c

b c b c b c b c b c b c

b c a b c a c a

b c a b c a c a

b c c a b c c a c a

b c a

32 43 1/ 24.a

Page 40: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

经典 R-K 方法

1 1 2 3 4

1

2 1

3 2

4 3

( 2 2 ) / 6,

( , ),

( / 2, / 2),

( / 2, / 2),

( , ).

i i

i i

i i

i i

i i

y y h k k k k

k f x y

k f x h y hk

k f x h y hk

k f x h y hk

局部截断误差为 O(h5)

Page 41: 第八章 常微分方程的数值方法 ( Numerical Methods for Ordinary Differential Equations  )

附注二阶 Runge-Kutta 方法的局部截断误差 只能达到三阶 Runge-Kutta 方法的局部截断误差 只能达到四阶 Runge-Kutta 方法的局部截断误差 只能达到五阶 Runge-Kutta 方法的局部截断误差 只能达到

3( );O h

4( );O h

5( );O h

5( ).O h