You are on page 1of 37

数 学 系

University of Science and Technology of China


DEPARTMENT OF MATHEMATICS

第8章 常微分方程
实际中,很多问题的数学模型都是微分方程。我们可以研究它们的一些
性质。但是,只有极少数特殊的方程有解析解。对于绝大部分的微分方程是
没有解析解的。

常微分方程作为微分方程的基本类型之一,在自然界与工程界有很广泛
的应用。很多问题的数学表述都可以归结为常微分方程的定解问题。很多偏
微分方程问题,也可以化为常微分方程问题来近似求解。

本章讨论常微分方程的数值解法
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

对于一个常微分方程:

dy
y'   f ( x, y ) , x  [ a , b ]
dx
通常会有无穷个解。如:
dy
 cos( x)  y  sin( x)  a, a  R
dx
因此,我们要加入一个限定条件。通常会在端点出给出,如下面的初值问题:

 dy
  f ( x, y ) , x  [ a , b ]
 dx
 y (a)  y0
为了使解存在唯一,一般,要加限制条件在f上,要求f对y满足Lipschitz条件:

f ( x, y1 )  f ( x, y2 )  L y1  y2
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

常微分方程的解是一个函数,但是,计算机没有办法对函数进行运算。
因此,常微分方程的数值解并不是求函数的近似,而是求解函数在某些节
点的近似值。

例:我们对区间做等距分割: xi  h i , h  (b  a) / m
设解函数在节点的近似为 { yi } ,则:
dy
 f ( x, y ) x  x
dx x  xi
i

由数值微分公式,我们有 向前差商公式
yi 1  yi
 f ( xi , yi )
h
yi 1  yi  h f ( xi , yi )
可以看到,给出初值,就可以用上式求出所有的 { yi }
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

这种方法 ,称为数值离散方法。求的是在一系列离散点列上,求未知函数y在这些
点上的值的近似。

基本步骤如下:
① 对区间作分割:  I : a  x0  x1    xn  b
求 y (x) 在 xi 上的近似值 yi 。 { yi } 称为分割  I 上的格点函数
我们的目的,就是求这个格点函数

② 由微分方程出发,建立求格点函数的差分方程。这个方程应该满足:

A、解存在唯一;B、稳定,收敛;C、相容

③ 解差分方程,求出格点函数
数值方法,主要研究步骤②,即如何建立差分方程,并研究差分方程的性质。
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

为了考察数值方法提供的数值解,是否有实用价值,需要知道如下几个结论:

① 步长充分小时,所得到的数值解能否逼近问题得真解;即收敛性问题

② 误差估计

③ 产生得舍入误差,在以后得各步计算中,是否会无限制扩大;稳定性问题
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

8.1 Euler公式
做等距分割,利用数值微分代替导数项,建立差分方程。
ba
 I : xi  i 称为局部截断误差。
m 显然,这个误差在逐
步计算过程中会传播,
1、向前差商公式
积累。因此还要估计
y ( xn 1 )  y ( xn ) h 这种积累
 y ' ( xn )  y ' ' ( n )
h 2
y ( xn 1 )  y ( xn ) h
 f ( xn , y ( xn ))  y ' ' ( n )
h 2
h2
y ( xn1 )  y ( xn )  hf ( xn , y( xn ))  y ' ' ( n )
2
所以,可以构造差分方程
yn1  yn  hf ( xn , yn )
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

定义 在假设 yi = y(xi),即第 i 步计算是精确的前提下,考虑


的截断误差 Ri = y(xi+1)  yi+1 称为局部截断误差 /* local
truncation error */。

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

考察局部误差的传播和积累
h2
y ( xn1 )  y ( xn )  hf ( xn , y( xn ))  y ' ' ( n )
2
yn1  yn  hf ( xn , yn )
记为 hT
n 1
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

en1  y( xn1 )  yn1


 y( xn )  yn  h f ( xn , y( xn ))  f ( xn , yn )  h Tn1
 en  hL y( xn )  yn  h Tn1
 (1  hL) en  hT , T  max T j
j

 (1  hL)(1  hL) en1  hT   hT


 (1  hL)2 en1  (1  hL)  1hT
 (1  hL)2 (1  hL) en2  hT   (1  hL)  1hT

 (1  hL)3 en2  (1  hL)2  (1  hL)  1 hT 

数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS


 (1  hL)n1 e0  (1  hL)n    (1  hL)  1 hT 
n 1
1  (1  hL )
 (1  hL) n1 e0  hT
1  (1  hL)
n 1
(1  hL )
 (1  hL) n1 e0  hT
hL
n 1  T e0  0
 (1  hL)  e0  
 L
(1  x) n  e nx
( n 1) hL  T 
e   T  O ( h)
L
是1阶方法
称为整体截断误差
 en1  O(h)
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

3、稳定性-误差在以后各步的计算中不会无限制扩大。是格式对舍入误差的抑止作用
我们考虑一种简单情况,即仅初值有误差,而其他计算步骤无误差。

设 {zi } 是初值有误差后的计算值,则

yn 1  yn  hf ( xn , yn )
zn 1  zn  hf ( xn , zn )
所以,我们有:

en1  yn1  zn1  en  h f ( xn , yn )  f ( xn , zn )


 en  hL yn  zn  en (1  hL)
   e0 (1  hL)n1  e0 e( n1) hL
可以看出,向前差商公式关于初值是稳定的。当初始误差充分小,以后各步的误差
也充分小
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

4、向后差商公式
y ( xn 1 )  y ( xn ) h
 y ' ( xn 1 )  y ' ' ( n )
h 2
y ( xn 1 )  y ( xn ) h
 f ( xn 1 , y ( xn 1 ))  y ' ' ( n )
h 2
h2
y ( xn 1 )  y ( xn )  hf ( xn 1 , y ( xn 1 ))  y ' ' ( n )
2
yn1  yn  hf ( xn1 , yn1 )
是隐格式,要迭代求解
( k 1)
 yn  hf ( xn 1 , yn 1 )
(k )
yn 1
( 0)
yn 1 可以由向前差商公式求出
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

5、中心差商公式
y ( xn 1 )  y ( xn 1 ) h
 y ' ( xn 1 )  y ' ' ( n )
h 2
yn1  yn1  hf ( xn1 , yn1 )
是多步,2阶格式,该格式不稳定

6、梯形法-基于数值积分的公式
对微分方程 dy
y'   f ( x, y ) , x  [ a , b ]
dx
做积分,则:
xn1 dy
xn dx
 f ( x, y )
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

xn1 局部截断误差
 y ( xn 1 )  y ( xn )   f ( x, y ( x))dx
xn

h  h2 
y( xn1 )  y( xn )  [ f ( xn , y( xn ))  f ( xn1 , y( xn1 ))]    f ' ' ' ( ) 
2  12 
所以,有格式为:
h
yn 1  yn  [ f ( xn , yn )  f ( xn 1 , yn 1 )]
2
类似,可以算出其误差估计式:

en 1  O(h 2 ) 2阶的方法

是个隐式的方法,要用迭代法求解
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

8.2 Runge-Kutta法
由Taylor展开
hk (k ) h k 1 ( k 1)
y( xn1 )  y( xn )  hy' ( xn )    y ( xn )  y ( n )
k! (k  1)!
y ' ( x )  f ( x, y )
y ' ' ( x )  f x ( x, y )  f y ( x, y )  y '
记为 hTn 1
y ' ' ' ( x)  
所以,可以构造格式

yn 1  yn  hf ( xn , yn )   f x ( xn , yn )  f y ( xn , yn )  f ( xn , yn )   
h2
2!
这种格式使用到了各阶偏导数,使用不便。
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

从另一个角度看,

y( xn1 )  y( xn )  hF (h, xn , y( xn ), f )  hTn1


取(x,y)及其附近的点做线性组合,表示F,问题就好办了。当然,要求此时的展开精
度相同。这种方法称为Runge-Kutta法
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

以2阶为例,设

F (h, x, y, f )  c1 f ( x, y)  c2 f ( x  a2h, y  b21hf ( x, y))


在(x,y)处展开,

F (h, x, y, f )

 c1 f ( x, y)  c2 f ( x, y)  a2 hf x ( x, y)  b21hf ( x, y) f y ( x, y)  O(h 2 ) 
比较
y ( xn 1 )  y ( xn )

 h  f ( xn , yn )   f x ( xn , yn )  f y ( xn , yn )  f ( xn , yn )   hTn 1
 h 
 2! 
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

有:
 c1  c2  1

 c2 a2  1 / 2
c b  1 / 2
 2 21
1、改进的Euler公式
c1  c2  1 / 2  yn1  yn  h / 2[ K1  K 2 ]
 
a 2  1  K1  f ( xn , yn )
b  1 K  f ( x  h, y  hK )
 21  2 n n 1

2、Heun公式

c1  1 / 4, c2  3 / 4

a2  2 / 3
b  2 / 3
 21
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

一般的Runge-Kutta法构造

 F (h, x, y, f )  c1 K1  c2 K 2    cm K m
 K  f ( x, y )
 1
 K 2  f ( x  a2 h, y  b21hK1 )


 m 1

 K m  f ( x  am h, y  h bmi K i
 i 1

常见的为3阶,4阶公式
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

8.3 线性多步法

用若干节点处的 y 及 y’ 值的线性组合来近似
y(xn+1)。其通式可写为:
yn1  a0 yn  a1 yn1  ...  ak ynk  h(b1 fn1  b0 fn  b1 fn1  ...  bk fnk )

当 b10 时,为隐式公
式; b1=0 则为显式公式。 f n  f ( xn , yn )
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

 基于数值积分的构造法

将 y  f ( x , y ) 在[ xn  p , xn 1 ] 上积分,得到
xi1
y( xn1 )  y( xn p )   f ( x, y( x))dx
xn  p
xn1
只要近似地算出右边的积分 I k  x f ( x, y( x))dx ,则可通
n p

过 yn 1  yn  p  I k近似y(xn+1) 。而选用不同近似式 Ik,可得到不


同的计算公式。
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS
xn1
若积分  xn p
y' ( x)dx 用节点 xn , xn 1 , , xn  q 作为积分点,则有

xn1
 xn p
y' ( x)dx  h[a0 y' ( xn )  a1 y' ( xn1 )    aq y' ( xnq )]  hTn1

局部截断误差
y' ( xn )  f ( xn , y( xn ))
q
y ( xn 1 )  y ( xn  p )  h a j f ( xn  j , y ( xn  j ))  hTn 1
j 0
xn1 y ( q  2) ( )
 q ( x)dx
积分系数 xn1
ha j   l j ( x)dx xn  p (q  1)!
xn p

这是显格式,q+1阶r+1步格式。r=max{p,q}

同样,若以 xn 1 , xn ,, xn  q 1 为积分节点,可以构造r+1步q+1阶隐格式


数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

例:建立p=1,q=2的显格式
xn1
p=1, 积分区间为  xn1
y ' ( x)dx
q=2,显格式, 积分节点为 xn , xn1 , xn2
所以
xn1( x  xn 1 )( x  xn  2 ) 7
ha0   dx  h
xn1 ( x  x
n n 1 )( xn  xn  2 ) 3
xn1 ( x  xn )( x  xn  2 ) 2
ha1   dx   h
n 1  xn )( xn 1  xn  2 )
xn1 ( x 3
xn1 ( x  xn )( x  xn 1 ) 1
ha2   dx  h
n  2  xn )( xn  2  xn 1 )
xn1 ( x 3
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

xn1 y ( 4) ( ) 1 4 ( 4)
Tn1   ( x  xn )( x  xn1 )( x  xn2 )dx  h y ( )
xn1 (3)! 3
例:建立p=2,q=2的隐格式
xn1
p=2, 积分区间为  xn 2
y ' ( x ) dx
q=2,隐格式, 积分节点为 xn1 , xn , xn1
所以
( x  xn )( x  xn 1 )
xn1 3
ha0   dx  h
n 1  xn )( xn 1  xn 1 )
xn2 ( x 4
( x  xn 1 )( x  xn 1 )
xn1
ha1   dx  0
xn2 ( x  x
n n 1 )( xn  xn 1 )
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

( x  xn 1 )( x  xn )
xn1 9
ha0   dx  h
n 1  xn 1 )( xn 1  xn )
xn2 ( x 4
xn1 y ( 4) ( ) 3 4 ( 4)
Tn1   ( x  xn1 )( x  xn )( x  xn1 )dx   h y ( )
xn1 (3)! 8
它的截断误差较 显格式 小,通常也具有更好的稳定性。

 Adams公式 -- p=0 时候的多步法


参见书
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

§8.4 方程组和高阶方程的数值解法
 dy1
 dx  f1 ( x, y1 ,, ym )

 dy
 m  f m ( x, y1 ,, ym )
 dx , a xb
 y1 (a)  1


 y (a)  
 m m

写成向量的形式:
 dY
  F ( x, Y )
 dx
Y (a)  
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

各种方法都可以直接运用过来。 以两个方程的方程组为例

 dy
 dx  f ( x, y, z )
 dz
  g ( x, y , z )
 dx , a xb
 y (a)  y
 0

 z (a )  z0
Euler公式

 yn1  yn  hf ( xn , yn , zn )

 zn1  zn  hg ( xn , yn , zn )
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

Runge-Kutta公式

 yn1   yn  h
      ( K1  2 K 2  2 K3  K 4 )
 zn1   zn  6

 f ( xn , yn , zn ) 
K1   
 g ( xn , y n , z n 
)
 h h (1) h (2) 
 f ( xn  2 , yn  2 K1 , zn  2 K1 )  h h
K2    K 2  F ( x  , Y  K1 )
 g ( x  h , y  h K (1) , z  h K (2) )  2 2
 
 
n n 1 n 1
2 2 2
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

 h h (1) h (1) 
 f ( xn  2 , yn  2 K 2 , zn  2 K 2 ) 
K3   
 g ( x  h , y  h K (1) , z  h K (1) ) 
 
 
n n 2 n 2
2 2 2
 f ( xn  h, yn  hK 3(1) , zn  hK 3(1) ) 
K4   (1) 
 g ( xn  h, y n  hK (1)
3 , z n  hK 3 )
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

 du u
 dt  0.05u (1  20 )  0.002uv

 dv  0.09v(1  v )  0.15uv

 dt 15
u (0)  0.193
v(0)  0.083

1、
 f (u, v, t )   0.05u (1  u / 20)  0.002uv 
F   
 g (u , v, t )   0.09v (1  v /15)  0.15uv 
2、确定方法,然后求解
(0.20276 0.0881157)
(0.213007 0.0934037)
4阶Runge-Kutta法,h=1
(0.223763 0.0988499)
(0.235052 0.104437)
(0.246902 0.110146)
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

高阶方程

d m y ( m 1)
 m  f1 ( x , y , y ' ,  , y )
 dx

 y (a)  
 1 , a xb
 y ' (a)   2


 y ( m 1) (a)   m
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS


 y  y1
 dy1
  y2
 dx
 
 dym 1  ym
 dx
则有:  dy1
 dx  y2

 dy
 m  f ( x, y1 ,, ym )
 dx , a xb
 y1 (a)  1


 y (a)  
 m m
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

 y( x )  30 y( x )
例:考察初值问题  在区间[0, 0.5]上的解。
 y ( 0)  1
分别用欧拉显、隐式格式和改进的欧拉格式计算数值解。

节点 xi 欧拉显式 欧拉隐式 改进欧拉法 精确解 y  e 30 x


0.0 1.0000 1.0000 1.0000 1.0000
0.1 2.0000 2.5000101 2.5000 4.9787102
0.2 4.0000 6.2500102 6.2500 2.4788103
0.3 8.0000 1.5625102 1.5626101 1.2341104
0.4 1.6000101 3.9063103 3.9063101 6.1442106
0.5 3.2000101 9.7656104 9.7656101 3.0590107

What is wrong ??!


数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

§8.5 差分方程的绝对稳定性
仍然考虑最简单的模型,即只有初值产生误差,看看这个误差的传播。

对于一般的差分方程
k k

a y
j 0
j n j  h b j f ( xn j , yn j )
j 0

由初始误差产生了差分解的误差,实际上是同一差分方程,取不同初值所得到的2组
差分解之间的差。这个差不仅于差分方程本身有关,而且与微分方程本身有关。如果
微分方程本身是不稳定,那就没理由要求这2组解充分接近。因此,差分方程的稳定性
概念是建立在微分方程稳定的基础上的。把这个典型微分方程规定为:

 dy
  y (Re   0)
 dx
 y (a)  y0
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

差分方程运用到如上的微分方程后,可以得到
k k

a y
j 0
j n j  h b j yn j
j 0
, Re(  )  0

对于给定的初始误差 e0 , e1 ,, ek 1 ,误差方程具有一样的形式


k k

a e
j 0
j n j  h b j en j
j 0
, Re(  )  0
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

定义:差分方程称为绝对稳定的,若差分方程作用到微分方程
dy
 y (Re   0)
dx
时,对任意的初值,总存在左半复平面上的一个区域,当 h 在这个区域时,差分
方程的解趋于0。这个区域称为稳定区域

例:向后Euler公式的稳定性

yn1  yn  hyn1
Img
误差方程:
en1  en  hen1
en1 1
en

1  h
1 0 1 2 Re
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

考察隐式欧拉法 yi 1  yi  h yi 1 Img

i 1
 1   1 
yi 1   yi  i 1    0
 1 h   1 h  0 1 2 Re

可见绝对稳定区域为: |1   h |  1

注:一般来说,隐式欧拉法的绝对稳定性比同阶的显式
法的好。
数 学 系
University of Science and Technology of China
DEPARTMENT OF MATHEMATICS

3阶Runge-Kutta
h
yn 1  yn  [ K1  4 K 2  K 3 ]
6
K1   y n Img
k=4 - 3
1
K1  yn (1  h)
k=3

k=2 -2
2

K1  yn 1  h  h 
2
 k=1
-1

 3
-3 -2 -1

yn 1  yn 1  h  h   h  
1 2 1 Re

 2 6 

显式 1~ 4 阶方法的绝对稳定区域为

You might also like