Transcript 偏微分方程
第九章
常微分方程数值解法
微分方程
常微分方程( ODEs 未知函数是一元函数)
dv
c
g v
dt
m
偏微分方程( PDEs
未知函数是多元函数)
u
u
2u
u
2
t
x
x
2 2
0
2
y
x
常微分方程
一阶方程:如
dv
c
g v
dt
m
二阶方程 :如
d2x
dx
m 2 c kx 0
dt
dt
y' ( x ) 2 x的解,
y( x ) x 2 c
方程加上适当的定解条件,才能确定方程的解.
定解条件 :
(1)初始值条件
( 2)边值条件
同一个微分方程,
具有不同的初始
条件
考虑一阶常微分方程初值问题
(Initial Value Problems )的数值解
dy
a xb
f ( x , y( x ))
dx
问题的解y( x )是[a , b]上的函数
y(a ) y0
数值解是求y( x )在一些离散点上的近似值
即给定节点: a x0 x1 x 2 x N b,
求上述问题的解y( x )在x n ( n 1,2, N )处
的近似值yn .
假定 : (1) f ( x , y )连续, 且关于y满足Lipschitz条件
由此保证初值问题的解存在唯一.
| f ( x , y ) f ( x , y ) | L | y y |
(2)hn xn1 xn (n 0,1,, N 1)为常量h.
a x b 求y ( k 1,2, N )
y f ( x , y )
n
y ( a ) y0
后边节点值 前边节点值 斜率 步长
单步法一般形式: yn1 yn n h
yn 1 yn hf ( x n , yn )
y0 y ( a )
yn1 yn hf ( x n1 , yn1 )
y0 y ( a )
h
y n 1 y n f ( x n , y n ) f ( x n 1 , y n 1 )
2
y0 y(a )
y f ( x , y )
微分方程离散化的方法
y ( a ) y0
(1) 用差商近似导数
y( xn ) f ( xn , y( xn ))
a xb
y( x n 1 ) y( x n )
y( xn )
h
y( x n 1 ) y( x n )
f ( xn , y( xn ))
h
y( xn1 ) y( xn ) hy( xn ) y( xn ) hf ( xn , y( xn ))
yn 1 yn hf ( x n , yn )
y0 y ( a )
差分方程初值问题
Euler方法
y f ( x , y )
y ( a ) y0
a xb
若用向后差商近似导数,即
y
(
x
)
y
(
x
)
n
1
n
y( xn1 ) f ( xn1 , y( xn1 )) y( xn1 )
h
y( x n 1 ) y( x n )
f ( xn1 , y( xn1 ))
h
y( xn1 ) y( xn ) hf ( xn1 , y( xn1 ))
yn1 yn hf ( x n1 , yn1 )
y0 y ( a )
向后Euler方法
(2)用数值积分方法
x n 1
xn
y( x n 1 ) y( x n )
x n 1
xn
y( x )dx
x n 1
xn
f ( x , y( x ))dx
f ( x , y( x ))dx
对积分用点xn 处的矩形公式得
y( xn1 ) y( xn ) f ( xn , y( xn )( xn1 xn )
yn1 yn hf ( xn , yn )
若对积分用梯形公式,则得
h
y( xn1 ) y( xn ) f ( xn , y( xn )) f ( xn1 , y( xn1 ))
2
h
y n 1 y n f ( x n , y n ) f ( x n 1 , y n 1 )
2
y0 y(a )
梯形公式
(3)用Taylor多项式近似
y( xn1 ) y( xn h) y( xn ) hy( xn )
yn1 yn hf ( xn , yn )
Euler方法
§1
Euler方法
1.Euler方法
以差分方程初值问题
yn1 yn hf ( xn , yn )
y0 y ( a )
n 0,1,, N 1
的解作为微分方程初值问题的数值解,即
y( xn ) yn , 称为Euler方法.
单步法一般形式: yn1 yn n h
用f ' ( xn )代替n
dy
y f ( x , y );
dx
y(x 0 ) y 0
用分段折线逼近曲线
y0
x0
h
x1
h
x2
h
x3
例 : 用欧拉方法求下列方程的数值解
dy
x y,
dx
y(0) 1,
0 x1
分别取h 0.5
h 0.25
解:Euler公式为
yn1 yn hf ( xn , yn ) yn hxn yn
n 0,1,
当h=0.5时
y(0.5) y1 y0 hx0 y0 1 (0.5)(0 1 ) 1.0
y(1.0) y2 y1 hx1 y1 1 (0.5)( 0.5 1 ) 1.25
yn1 yn hxn yn
(n 0,1,)
当h=0.25时
y(0.25) y1 y0 0.25 x0 y0 1 (0.25)(0 1 ) 1
y(0.5) y2 y1 0.25 x1 y1
1 (0.25)( 0.25 1 ) 1.0625
y(0.75) y3 y2 0.25 x2 y2
1.0625 (0.25)( 0.5 1.0625 ) 1.191347
y(1.0) y4 y3 0.25 x3 y3 y(0.75) hf (0.75, 1.191347)
1.191347 (0.25)( 0.75 1.191347) 1.39600
dy
y x y ;
dx
y(0 ) 1
解析解为: y (1 x 2 / 4)2
h = 0.25
h = 0.5
1
0
0.25
0.5
0.75
1.0
1.2
Euler方法的误差估计
局部截断误差:Rn1 y( xn1 ) yn1,其中yn y( xn ).
整体截断误差: en1 y( xn1 ) yn1 .
dy
y f ( x , y );
dx
y
x0
h
y ( x 0 ) y0
x1
h
x2
h
x3
定义 : 若某种数值方法的局部截断误差
Rn1 O( h P 1 ), 则称该方法是 p 阶方法.
若Rn1 ( xn , y( xn ))h P 1 O( h P 2 ),
则称 ( xn , y( xn ))h P 1为局部截断误差的主项.
对Euler方法,局部截断误差
1 2
y( xn1 ) y( xn h) y( xn ) hy' ( xn ) h y( )
2
xn xn1
yn1 yn hf ( xn , yn ) yn hy' ( xn )
Rn1 y( xn1 ) yn1
1 2
h y( )
2
xn xn 1
Euler方法为1阶方法,局部截断误差: Rn 1 1 h2 y( )
2
Euler方法的整体截断误差
记:yn1 y( xn ) hf ( xn , y( xn ))
hM
L( b a )
e n 1 y( x n 1 ) y n 1
e
1 O( h)
2L
若f ( x, y )充分光滑, 使得y( x ) C a, b, 则 M 0, 使得 | y( x ) | M
( 2)
向后Euler方法 :
yn1 yn hf ( xn1 , yn1 ) n 0,1,
y0 y ( a )
这是隐式公式, 一般需用迭代法求解
yn( 0)1 yn hf ( xn , yn )
( k 1)
yn1 yn hf ( xn , yn( k)1 ) k 0,1,
局部截断误差:
Rn1 y( xn1 ) yn1
1 2
h y( xn ) O( h3 )
2
§2
改进Euler方法
2.1 梯形公式
h
y n 1 y n f ( x n , y n ) f ( x n 1 , y n 1 )
2
y0 a
h3
截 断 误 差: Rn1 y( xn1 ) yn1 y( )
12
xn xn1
梯形公式为二阶方法, 且为隐式格式
yn( 0)1 yn hf ( xn , yn )
求解公式
( k 1)
h
(k )
y
y
f
(
x
,
y
)
f
(
x
,
y
(k 0,1,2,)
n1
n
n n
n1 n1 )
2
h
y n 1 y n f ( x n , y n ) f ( x n 1 , y n 1 )
2
y0 a
求截断误差
h2
h3
h4 ( 4 )
y( xn1 ) y( xn ) hy( xn ) y( xn ) y( xn ) y (1 ) xn 1 xn1
2
6
24
若yn y( xn ),
h
yn1 y( xn ) ( f ( xn , y( xn )) f ( xn1 , yn1 ))
2
h
y( xn ) ( f ( xn , y( xn )) f ( xn1 , y( xn1 )))
2
h
y( xn ) ( y( xn ) y( xn1 ))
2
h
yn1 y( xn ) ( y( xn ) y( xn1 ))
2
h2
h3
h4 ( 4 )
y( xn ) hy( xn ) y( xn ) y( xn ) y ( 2 ) xn 2 xn1
2
4
12
h2
h3
h4 ( 4 )
y( xn1 ) y( xn ) hy( xn ) y( xn ) y( xn ) y (1 )
2
6
6
xn 1 xn1
h3
Rn1 y( xn1 ) yn1 y( xn ) O( h4 )
12
或用梯形公式的误差
Rn1 y( xn )
x n 1
xn
h
h3
f ( xn , y( xn )) y( xn ) f ( xn , yn ) f ( xn1 , yn1 ) y( )
2
12
xn xn1
2.2 改进Euler法
yn1 yn hf ( xn , yn )
h
yn1 yn 2 f ( xn , yn ) f ( xn1 , yn1 )
预测
校正
称为Euler公式与梯形公式的预测—校正系统。
实际计算时,常改写成以下形式
y p yn hf ( xn , yn )
yq yn hf ( xn1 , y p )
y n 1 1 ( y p yq )
2
yi01 yi hf ( xi , yi )
predictor
1
f ( xi , yi ) f ( xi 1 , yi01 )
2
h
yi 1 yi f ( xi , yi ) f ( xi 1 , yi01 )
2
corrector
y' y
例 : ( p.265 13)写出初值问题
改进的Euler法
y ( 0) 1
近似解的表达式, 并证明当h 0时, 收敛于真解.
解 : 改进的Euler法计算公式
yn1 yn hf ( xn , yn )
h
f ( xn , yn ) f ( xn1 , yn1 )
y
y
n
n1
2
预测
校正
yn1 yn hyn
2
h
h
yn1 yn ( yn yn hyn ) yn hyn
yn
2
2
h2
h2 n
yn yn1 (1 h ) y0 (1 h )
2
2
2
x
h
令x nh
2
h
h
lim yn lim (1 h ) lim (1 h )
h 0
h 0
h 0
2
2
2 h h2
2h
2 h h2
2x
ex
例 : 用改进的Euler方法计算初值问题 y p yn hf ( xn , yn )
2
yq yn hf ( xn1 , y p )
y' y y sin x ,
1
y(1) 1,
yn1 2 ( y p yq )
的解在1.2和1.4处的近似值, 取步长h 0.2,
小数点后至少保留5位.
解 : 改进的Euler方法
yn1 yn hf ( xn , yn )
h
yn1 yn 2 f ( xn , yn ) f ( xn1 , yn1 )
预测
校正
f ( x , y ) y y 2 sin x
y p yn h( yn yn2 sin x n )
y p yn h( y p y 2p sin x n1 )
yn1
1
( y p yq )
2
y(0) y0 1, h 0.2
y p yn h( yn yn2 sin x n )
y p yn h( y p y 2p sin x n1 )
1
y n 1 ( y p yq )
2
n 0时, y p 0.631706
n 0,1
y p 0.799272
y(1.2) y1 0.71549
n 1时, y p 0.476964
y(1.4) y2 0.52611
y p 0.575259
y(0) y0 1
§3
Runge—Kutta法
3.1 : 基本思想
以函数f ( x , y )在若干点上的函数值的线性组合构造公式,
组合系数与点的选取要使近似公式在( x n , yn )处的Taylor
展开与解y( x )在x n 在的Taylor展开式的前p 1项重合,
从而得到p阶公式.
单步法一般形式:
Runge Kutta :
yn1 yn ( xn , yn , h) h
c1 K1 c2 K 2 cn K n
1. RK方法的构造
RK公式的一般形式为
yn1 yn ( xn , yn , h)h
( xn , yn , h) c1 K 1 c2 K 2 cn K n
K1
K2
K3
K n
f ( xn , yn )
f ( xn a2 h, yn b21 K 1h)
f ( xn a3 h, yn b31 K 1h b32 K 2 h)
f ( xn an h, yn bn ,1 K 1h bn , 2 K 2 h bn ,n1 K n1h)
其中 ai , bij , ci 为待定系数.
以p 2为例, RK公式的几何意义:
y n 1 y n h( c1 K 1 c 2 K 2 )
K 1 f ( x n , yn )
K f ( x a h, y hb K )
n
2
n
21
1
2
K2
K1
c1 K1 + c2 K2
加权平均斜率
xn
xn+a2h
xn+1
= xn+h
Taylor展开公式:
h2
h3
y( x h) y( x ) hy( x )
y( x )
y( x )
2
6
f ( x h, y k ) f ( x , y ) h
f
f
( x, y) k ( x, y)
x
y
2
2
2
f
f
f
2
2
h
( x , y ) 2hk
( x, y ) k
( x, y)
2
2
x
xy
y
复合函数求导链式法则:
y( x ) f ( x , y( x ))
y( x ) f ( x , y( x ))
y( x ) f ( x , y )
f f dy f f
f f x ff y
x y dx x y
f f dy f f dy dy
x x y dx y x y dx dx
以p 2为例, RK公式的推导:
y n 1 y n h( c1 K 1 c 2 K 2 )
K 1 f ( x n , yn )
K f ( x a h, y hb K )
n
2
n
21
1
2
yn1 yn hc1 f ( xn , yn ) c2 f xn a2 h, yn hb21 f ( xn , yn )
c1 f ( xn , yn )
yn h
2
c2 f ( xn , yn ) a2 hf x ( xn , yn ) b21hf ( xn , yn ) f y ( xn , yn ) O(h )
yn (c1 c2 )hf ( xn , yn ) c2h2 a2 f x ( xn , yn ) b21 f ( xn , yn ) f y ( xn , yn ) O(h3 )
yn1 yn (c1 c2 )hf ( xn , yn ) c2h2 a2 f x ( xn , yn ) b21 f ( xn , yn ) f y ( xn , yn ) O(h3 )
h2
y( xn1 ) y( xn ) hy( xn ) y( xn ) O( h3 ) 由yn y( xn )得
2
h2
yn hf ( xn , yn )
f x ( xn , yn ) f y ( xn , yn ) f ( xn , yn ) O(h3 )
2
为使y( xn1 ) yn1 O( h3 ),
c1 c2 1
1
c 2 a 2
2
1
c 2 b21
2
c1 c2 1
1
c
a
2 2
2
1
c 2 b21
2
1
1
特别地, 令c2 , 则c1 , a2 b21 1
2
2
h
yn1 yn f ( xn , yn ) f ( xn h, yn hf ( xn , yn ))
2
这就是改进Euler公式,故其为二阶方法。
h
yn1 yn 2 ( K 1 K 2 )
K 1 f ( xn , yn )
K f ( x h, y hK )
n
n
1
2
y p yn hf ( x n , yn )
yq yn hf ( x n1 , y p )
y n 1 1 ( y p yq )
2
由
c1 c 2 1
1
c 2 a 2
2
1
c 2 b21
2
1
令c2 1, 则c1 0, a2 b21 ,
2
则得如下中点公式
K2
yn1 yn hK 2
K 1 f ( x n , yn )
h
h
K 2 f ( xn , yn K 1 )
2
2
K1
xn
xn+1/2
xn+1
三阶Runge Kutta公式的一般形式:
K 1 f ( xn , yn )
K 2 f ( x n a 2 h, yn b21 K 1 h)
K 3 f ( x n a 3 h, yn b31 K 1 h b32 K 2 h)
yn1 yn (c1 K 1 c2 K 2 c3 K 3 )h
c1 K1 c2 K 2 c3 K 3
1
y n 1 y n ( 2 K 1 3 K 2 3 K 3 )h y n 1
8
K 1 f ( x n , yn )
K1
2
2
K 2 f ( x n h, yn K 1h)
K2
3
3
2
2
K 3 f ( x n 3 h, yn 3 K 2 h)
K 3
1
y n ( 2 K 1 3 K 2 4 K 3 )h
9
f ( x n , yn )
1
1
f ( xn h, yn K 1h)
2
2
3
3
f ( xn h, yn K 2 h)
4
4
经典三阶RK公式(右端类似Simpson公式)
h
yn1 yn 6 ( K 1 4 K 2 K 3 )
K 1 f ( xn , yn )
K f ( x h , y h K )
n
n
1
2
2
2
K f ( x h, y hK 2hK )
n
n
1
2
3
经典四阶RK公式
h
yn1 yn ( K 1 2 K 2 2 K 3 K 4 )
6
K 1 f ( xn , yn )
K 2 f ( xn h , yn h K 1 )
2
2
K f ( x h , y h K )
n
n
2
3
2
2
K f ( x h, y hK )
n
n
3
4
经典四阶RK公式的几何意义
K2
K4
K3
K1
xn
1
( K1 2K 2 2K 3 K 4 )
6
xn + h/2
xn + h
说明: 当 p 4时, RK公式的最高阶数为p;
当 p 4时, RK公式的最高阶数小于p.
4阶Runge-Kutta方法
dy
y sin x ; y(0 ) 1
dx
Euler
Euler_mod
midpoint
RK4
n = 10
Euler
Euler_mod
midpoint
RK4
n = 20
例 : 证明Runge Kutta公式
h
yn1 yn ( k 2 k 3 )
2
k1 f ( x n , y n )
k 2 f ( x n th, yn thk1 )
k 3 f ( x n (1 t )h, yn (1 t )hk1 )
对任意参数t至少是二阶公式.
证明: 精确解y( xn1 )和数值解yn1展开为f ( xn , yn )及其各阶偏导的形式
y( xn1 )在xn 处Taylor展开
h2
yn y( x n )
y( xn1 ) y( xn ) hy( xn ) y( xn ) O( h3 )
2
h2
yn hf ( xn , yn ) f1( xn , yn ) f 2( xn , yn ) f ( xn , yn ) O( h3 )
2
h
y
y
(k2 k3 )
n
n1
2
k f ( x , y )
n
n
1
k 2 f ( x n th, yn thk1 )
k 3 f ( x n (1 t )h, yn (1 t )hk1 )
k2 f ( xn th, yn thk1 )
f ( xn , yn ) thf '1 ( xn , yn ) thk1 f '2 ( xn , yn ) O( h2 )
f ( xn , yn ) thf1 ' ( xn , yn ) thf ( xn , yn ) f 2 ' ( xn , yn ) O( h2 )
k3 f ( xn (1 t )h, yn (1 t )hk1 )
f ( xn , yn ) (1 t )hf1 ' ( xn , yn ) (1 t )hk1 f 2 ' ( xn , yn ) O( h2 )
f ( xn , yn ) (1 t )hf1 ' ( xn , yn ) (1 t )hf ( xn , yn ) f 2 ' ( xn , yn ) O( h2 )
k2 f ( xn , yn ) thf1 ' ( xn , yn ) thf ( xn , yn ) f 2 ' ( xn , yn ) O( h2 )
k3 f ( xn , yn ) (1 t )hf1 ' ( xn , yn ) (1 t )hf ( xn , yn ) f 2 ' ( xn , yn ) O( h2 )
于是, 得到yn1在( xn , yn )处的展开式:
h
yn1 yn ( k 2 k 3 )
2
h
yn 2 f ( xn , yn ) hf1 ' ( xn , yn ) hf 2 ' ( xn , yn ) f ( xn , yn ) O( h2 )
2
h
yn1 yn 2 f ( xn , yn ) hf1 ' ( xn , yn ) hf 2 ' ( xn , yn ) f ( xn , yn ) O( h2 )
2
h2
y( xn1 ) yn hf ( xn , yn ) f1( xn , yn ) f 2( xn , yn ) f ( xn , yn ) O( h3 )
2
y( x n 1 ) y n 1 O( h 3 )
对任意t上述Runge Kutta方法至少是二阶公式.
注 : 事实上,可以证明局部截断误差h3的系数不为零,
是二阶公式
§4
线性多步法
单步法的一般形式:yn1 yn h ( xn , yn , yn1 , h)
显式为: yn1 yn h ( xn , yn , h)
其中称为增量函数.
r
r
i 0
i 1
多步法一般形式: yn1 i yn i h i f n i
其中f n i f ( xn i , yn i ), i , i 为待定系数.
若 1 0 为显式公式, 1 0 为隐式公式.
显式线性三步法的几何意义 :
2
2
i 0
i 0
yn1 i yn i h i f n i
fn
f n 1
f n 2
0 f n 1 f n 1 2 f n 2
0 y n 1 y n 1 2 y n 2
xn-2
xn-1
xn
xn+1 = xn+h
4.1 线性多步公式的导出
r
r
i 0
i 1
多步法一般形式: yn1 i yn i h i f n i
利用Taylor展开
p
h2
h
yn i y( xn ih) yn ( i )hyn ( i )2 h2 yn ( i ) p yn( p ) O(h p1 )
2
p!
h p 1 ( p )
f n i y( xn i ) yn ( i )hyn
y n O( h p )
( p 1)!
h p 1 ( p )
f ( xn1 , y( xn1 )) y( xn1 ) yn hyn
y n O( h p )
( p 1)!
约定
f n1
h2
h p ( p)
y( xn1 ) yn hyn
yn
y n O( h p 1 )
2
p!
r
r
i 0
i 1
yn1 i yn i h i f n i
yn1
r
r
i yn h ( i ) i i yn
i 0
i 1
i 1
r
r
h2 r
2
( i ) i 2 ( i ) i yn
2 i 1
i 1
r
( p)
hp r
p
p 1
p 1
(
i
)
p
(
i
)
y
O
(
h
)
i
i n
p! i 1
i 1
r
i 1
i 0
r
r
( i ) k k ( i ) k 1 1
i
i
i 1
i 1
()
( k 1,2, , p)
p阶公式的局部截断误差:
r
( p 1)
h p 1 r
p 1
p
p 2
Rn1
1
(
i
)
(
p
1
)
(
i
)
y
O
(
h
)
i
i n
( p 1)! i 1
i 1
结论:r 1步公式至多可以达到2r 2阶精度.
例 : 讨论二步公式
h
y n 1 y n 1 ( f n 1 4 f n f n 1 )
3
是几阶公式, 并求出它的局部截断误差.
h
y n 1 y n 1 ( f n 1 4 f n f n 1 )
3
解 : 精确解y( xn1 )和数值解yn1展成y( xn )及其各阶导数形式
yn1 y( xn h)
h2
h3
h4 ( 4 ) h5 ( 5 )
yn hyn yn yn yn yn O( h6 )
2
3!
4!
5!
f n1 f ( xn1 , y( xn1 )) y( xn1 ) y( xn h)
h2
h 3 ( 4 ) h4 ( 5 )
yn hyn yn yn yn O( h5 )
2!
3!
4!
f n1 f ( xn1 , y( xn1 )) y( xn1 ) y( xn h)
h2
h 3 ( 4 ) h4 ( 5 )
yn hyn yn yn yn O( h5 )
2!
3!
4!
h
y n 1 y n 1 ( f n 1 4 f n f n 1 )
3 1
1 1
2
yn1 yn hyn 1 (1 4 1) h yn (1 1)
3
2 3
1 1 1
1 1 1 1
3
4 (4) 1
h y n ( ) h y n ( )
3! 3 2 2
4! 3 3! 3!
1 1 1 1
h y ( ) O ( h 6 )
5! 3 4! 4!
h2
h3
h4 ( 4 )
7 5 (5)
yn hyn
yn
yn
yn
h y n O ( h6 )
2
6
4!
360
5
(5)
n
y( xn1 ) y( xn h) yn hy
(1)
n
y( x n1 ) yn 1
h 2 ( 2 ) h 3 ( 3 ) h4 ( 4 ) h5 ( 5 )
yn
yn
yn
yn O( h6 )
2
6
4!
5!
1
7
(
)h5 yn( 5 ) O( h6 )
5! 360
h5 ( 5 )
y n O ( h6 )
90
4.2 常用的线性多步公式
1. Adams公式
h
yn1 yn (55 f n 59 f n1 37 f n 2 9 f n 3 )
24
Rn1
251 5 ( 5 )
h y n O ( h6 )
720
四阶Adams显式公式
h
yn1 yn (9 f n1 19 f n 5 f n1 f n 2 )
24
19 5 ( 5 )
Rn1
h y n O ( h6 )
720
四阶Adams隐式公式
(二)Milne公式
4
yn1 yn 3 h(2 f n f n1 2 f n 2 )
3
Rn1
14 5 ( 5 )
h y n O ( h6 )
45
(三)Hamming公式
1
3
yn1 (9 yn yn 2 ) h( f n1 2 f n f n1 )
8
8
1 5 (5)
Rn1 h yn O( h6 )
40
说明
1.线性多步公式不能自启动,
一般需用同阶单步法求得初值后
再用线性多步公式计算;
2. 一般地,同阶隐式公式比显式公式精确,
但隐式公式计算复杂,需用迭代法求解。
4.3 预测—校正系统
Adams预测—校正公式:
h
y
y
n1 n 24 (55 f n 59 f n1 37 f n 2 9 f n 3 )
y y h 9 f ( x , y ) 19 f 5 f f
n1 n1
n
n 1
n 2
n1 n 24
Milne—Hamming预测—校正公式:
4
yn1 yn 3 3 h( 2 f n f n1 2 f n 2 )
y 1 (9 y y ) 3 h f ( x , y ) 2 f f
n1
n1
n
n 1
n1 8 n n 2 8
§5
相容性、收敛性与稳定性
5.1 相容性与收敛性
原方程:
y f ( x , y )
y ( x 0 ) y0
()
yn1 yn h ( xn , yn , h)
单步法离散方程:
y ( x 0 ) y0
()
问题:
1. 当 h 0 时,差分方程是否无限逼近微分方程?
2. x (a , b], 当 h 0时,问题(* *)的解
是否无限逼近问题(
*)的解?
相容性:
如果增量函数 ( x, y, h) 关于 h 连续且满足条件
( x , y,0) f ( x, y )
则称单步法与问题(*)相容,
也称问题(**)与(*)相容。
结论:若 ( x , y , h)足够光滑(连续,对h偏导数存在有界)
则单步法为 p 阶 ( p 1)的充要条件问题 (*) 相容。
必要性 :
若 yn1 yn h ( xn , yn , h) 为p阶方法
则 y( xn1 ) y( xn ) - h ( xn , y( xn ), h) O( h p 1 )
也即 y( x h) y( x ) - h ( x, y( x ), h) O( h p1 )
y( x h) y( x )
( x , y( x ), h) O( h p )
h
两边取极限,由的连续性得
( x , y( x ),0) lim ( x , y( x ), h) y( x ) f ( x , y( x ))
h 0
收敛性 : 如果某种数值方法对任意x a , b,
lim yn y( x )
x a nh
h 0
则称该数值方法是收敛的.
定理9.1 : 设单步法具有p阶精度, 其增量函数
( x , y , h)关于y满足Lipschitz条件, 问题(*)的
初值是精确的, 则单步法的整体截断误差为
en 1 y( x n 1 ) yn 1 O( h p )
定理9.2 : 设增量函数 ( x , y , h)在区域S 上连续,
S:
a x b,
y ,
0 h h0
且关于y满足Lipschitz条件, 则单步法收敛的充要
条件是相容性条件成立.
参考李立康等
收敛性
《微分方程数值解》
定理9.1
相容性
结论
p阶方法( p 1)
结论 : 若f ( x , y )在区域D : a x b, y
连续, 且关于y满足L条件, 则Euler, 改进Euler
和各阶RK方法都是收敛的.
以上方法均为( p 1)方法,
且增量函数满足定理9.1的条件.
注 对形式简单的方程,可以由差分方程解的表达式
取极限导出收敛性。
x0
y ay
例如对初值问题:
y ( 0) 1
用Euler法得近似解表达式
yn yn1 hayn1 (1 ha ) yn1 (1 ha )
对 x nh, 当 h 0 时有
x
h
lim yn lim (1 ha ) lim (1 ha ) e
n
h 0
h 0
ax
h 0
容易验证 y e ax 是初值问题的解。
n
5.2 稳定性
y( x ) 30 y( x )
例 : 考虑初值问题
在区间[0,0.5]上的解.
y ( 0) 1
分别用欧拉显式, 欧拉隐式和改进欧拉方法求解.
节点
欧拉显式
xi
0.0
1.0000
0.1
2.0000
0.2
4.0000
0.3
8.0000
0.4
1.6000101
0.5
3.2000101
欧拉隐式
改进欧拉法
精确解y e 30 x
1.0000
2.5000101
6.2500102
1.5625102
3.9063103
9.7656104
1.0000
2.5000
6.2500
1.5626101
3.9063101
9.7656101
1.0000
4.9787102
2.4788103
1.2341104
6.1442106
3.0590107
定义 : 若算法在计算过程中任一步产生的误差
在以后的计算中都逐步衰减, 则称该算法
是绝对稳定的.
一般分析时, 为了简单, 只考虑试验方程
y y
为常数, 可以是复数
当步长取为h时, 将某算法应用于上式(试验方程),
假设yn 有误差 , 则若此误差以后逐步衰减, 则称
该算法相对于h h绝对稳定, h 的全体构成稳定区域.
若算法A的稳定区域比算法B的稳定区域大,
则称算法A比算法B稳定.
特别地, 若绝对稳定区域包含左半平面, 则称
该方法是A 稳定的.
讨论各种方法的稳定的
.
Im( h)
1.显式Euler方法 :
用Euler方法求解试验方程: y y
-2
-1
yn1 yn hyn (1 h) yn
若yn有舍入误差 , 则
yn1 (1 h)( yn ) yn1 (1 h)
n1 (1 h)
n k (1 h)k
故Euler法的绝对稳定区域为: 1 h 1
0
Re(h)
2.隐式Euler方法 :
用隐式Euler方法求解试验方程: y y
Im( h)
yn1 yn hyn1
yn1
1
yn
1 h
故隐式Euler法的绝对稳定区域为:
0
1
2
1 h 1
注:一般来说,隐式欧拉法的绝对稳定性比同阶
的显式法的好。
Re(h)
3.改进的Euler方法 :
h
yn 1 yn [ f ( x n , yn ) f ( x n 1 , yn 1 )]
2
h
yn [ f ( x n , yn ) f ( x n 1 , yn hf ( x n , yn ))]
2
将改进Euler法用于试验方程,则有
2 h 2
h
) yn
yn1 yn yn ( yn hyn ) (1 h
2
2
2 h 2
n1 (1 h
)
2
故改进Euler法的绝对稳定区域为:
1 h
2 h 2
2
1
4.梯形公式:
梯形公式用于模型方程则为
yn 1
h
yn (yn yn 1 )
2
故其绝对稳定区域为
h
h
1
1
2
2
1
yn1
h
2 1
h
1
2
Re(h) 0
因此梯形公式是A―稳定的。
1
h
2 y
h n
1
2
Im( h)
0
Re(h)
对四阶RK方法,有
h
yn1 yn ( K 1 2 K 2 2 K 3 K 4 )
6
h
2 h
K 1 yn K 2 ( yn K 1 ) (
) yn
2
2
h
2 h 3 h 2
K 3 ( yn K 2 ) (
) yn
2
2
4
3 2
4 3
h
h
2
K 4 ( yn hK 3 ) ( h
) yn
2
4
3 2
3 2
4 3
h
h
h
h
2
2
2
yn1 yn ( 2 h 2 h
h
) yn
6
2
2
4
(h)2 (h)3 (h)4
1 h
yn
2
6
24
其绝对稳定区域为
(h)2 (h)3 (h)4
1 h
1
2
6
24
(1)当为实数时, Euler方法, 改进的Euler方法,
梯形公式, 四阶RK法的绝对稳定区间分别为
2 h 0
h 0
(h)2
2 h
0
2
2.78 h 0
f
( 2)对一般常微分方程y f ( x , y ),
y
( 3)只有当步长h的选取使得h在绝对稳定区域内时,
计算结果才能稳定; 否则, 数值计算是不稳定的.
例:有解初值问题
y f ( x , y )
y ( x 0 ) y0
h
h
的龙格 库塔公式: yn1 yn hf ( xn , yn f ( xn , yn ))
2
2
(1)证明该公式是二阶公式;
( 2)求该公式的绝对稳定的实数区间;
( 3)若f ( x , y ) y , y(0) 1, h 0.2求y(0.2)的近似值
解:
(2)将上述公式用于模型方程
y y
y ( x 0 ) y0
h
( h )2
yn1 yn h ( yn yn ) yn (1 h
)
2
2
( h )2
[2,
0]
稳定性区域:
| 1 h
| 1 得实数区间:
2
( 3)1.22
§6一阶微分方程组和高阶微分方程的数值解法
6.1 一阶微分方程组的数值解法
一阶微分方程组的初值问题的一般形式为:
dy1
dx f1 ( x , y1 , y2 , , ym )
dym f ( x , y , y , , y )
m
1
2
m
dx
初值 : y1 ( x0 ) y10 , y2 ( x0 ) y20 , ym ( x0 ) ym 0
6.1.1 : 用显式Euler公式解微分方程组初值问题 :
以两个方程为例
dy1
dx f1 ( x , y1 , y2 )
dy
1 f1 ( x , y1 , y2 )
dx
初值y1 ( x0 ) y10 , y2 ( x0 ) y20
y1,n1 y1,n hf1 ( x n , y1,n , y2 ,n )
y2 ,n1 y2 ,n hf 2 ( x n , y1,n , y2 ,n )
6.1.2 : 用经典4阶RK方法解微分方程组初值问题 :
以两个方程为例
k1,1
k1, 2
k 2 ,1
k
2 , 2
k 3 ,1
k
3 , 2
k4 ,1
k4 , 2
f1 ( x n , y1,n , y2 ,n )
f 2 ( x n , y1,n , y2 ,n )
h
h
h
, y1, n k1,1 , y2, n k1,2 )
2
2
2
h
h
h
f 2 ( x n , y1, n k1,1 , y2, n k1,2 )
2
2
2
h
h
h
f1 ( x n , y1, n k 2,1 , y2, n k 2,2 )
2
2
2
h
h
h
f 2 ( x n , y1, n k 2,1 , y2, n k 2,2 )
2
2
2
f1 ( x n h, y1,n k 3,1h, y2, n k 3,2h)
f1 ( xn
f 2 ( x n h, y1,n k 3,1h, y2, n k 3,2h)
1
y
y
( k1 , 1 2 k 2 , 1 2 k 3 , 1 k 4 , 1 ) h
1, n
1,n1
6
1
y
y
( k1 , 2 2 k 2 , 2 2 k 3 , 2 k 4 , 2 ) h
2,n
2 ,n1
6
6.2高阶微分方程的数值解法
y ( n ) f ( x , y, y, y, , y ( n1) )
y( x0 ) 0 , y( x0 ) 1 , , y ( n1) ( x0 ) n1
化为一阶微分方程组:
y1 y
y1 ( x0 ) α0
y1 y2 ,
y2 ( x0 ) α1
y2 y
y2 y3 ,
令 y3 y y3 y4 ,
y3 ( x0 ) α2
yn y ( n1)
yn f ( x,y1 ,y2 , ,yn ) , yn ( x0 ) αn1