Upload
ova
View
174
Download
4
Embed Size (px)
DESCRIPTION
第六章 常微分方程及 方程组的解法. 6.1 常微分方程及其求解概述 6.2 初值问题解法 6.3 边值问题解法. 6.1 常微分方程及其求解概述 6.2 初值问题解法 1.Euler 方法 2 . 线性多步法 3.Runge--Kutta 法 4. 方程组及刚性问题的 Gear 方法 6.3 边值问题解法 1.Shooting( 试射法 ) 2. 差分法. 6.1 常微分方程及求解概述 ( Ordinary Differential Equations, ODE). - PowerPoint PPT Presentation
Citation preview
浙江大学研究生学位课程
《实用数值计算方法》 1
第六章 常微分方程及 方程组的解法
6.1 常微分方程及其求解概述
6.2 初值问题解法
6.3 边值问题解法
浙江大学研究生学位课程
《实用数值计算方法》 2
6.1 常微分方程及其求解概述6.2 初值问题解法 1.Euler 方法 2. 线性多步法 3.Runge--Kutta 法 4. 方程组及刚性问题的 Gear 方法
6.3 边值问题解法 1.Shooting( 试射法 )
2. 差分法
EquationsalDifferentiOrdinaryODEs
浙江大学研究生学位课程
《实用数值计算方法》 3
6.1 常微分方程及求解概述( Ordinary Differential Equations, ODE)
6.1.1 基本概念
描述自由落体的 ODE:
的运动轨迹。
唯一确定了那么
时时
或设:
时若设:
tssODE
st
st
sst
mgdt
sd
16
3601
00
261,00
16
1
0
'0
2
2
浙江大学研究生学位课程
《实用数值计算方法》 4
只有一个自变量的微分方程为 ODE,
否则称为偏微分方程 PDE 。
方程中未知函数导数的最高阶数称为 方程的阶。 ( 6-4 )是二阶的
方程中关于未知函数及其各阶导数
均是一次的,则称为线性微分方程。
462
2
xrdx
dyxq
dx
yd如:
和( 6-1 )都是线性二阶 ODE 。
(6-2),(6-3) 是 (6-1) 的初始条件。亦称定解
条件。 (6-1)(6-2) 叫做初值问题。
6.1.1
浙江大学研究生学位课程
《实用数值计算方法》 5
6.1.1
( 6-1 ),( 6-3 )叫做边值问题。
在没有给定解条件时。方程一般
有一族解曲线 y(x,c) 。如:
为任意常数。有解 ccecxy
ydx
dy
x
,
对任意的 n 阶 ODE ,如果能写成: 56,,,, 1' nn yyyxfy
则称该方程为显式的。方程( 6-4 )是
显式的。而下面方程是隐式的。
xyyy '' expsin
浙江大学研究生学位课程
《实用数值计算方法》 6
对于高阶显式方程。通过定义 n-1 个
新变量,可以写成 n 维一阶方程组。
即令:
向量形式:一般我们把方程组写成
组:可以改写为如下的方程那么
76
,,,,
56
661,,1,
110'
1
1'
2
2'1
1'0
0
1
nn
nn
ii
yyyxfy
yy
yy
yy
xyxy
nidx
xdyxy
6.1.1
浙江大学研究生学位课程
《实用数值计算方法》 7
yxfy ,'
Tn
Tn
ffff
yyyy
110
110
,,,
,,,
这里:
在讨论初值问题时,我们从一阶方
程开始:
00
' ,
yxy
yxfy
然后毫不费力地套用来解方程组。
当 f(x,y) 与 y 无关时, f(x,y)=g(x)
广泛的意义。故求解微分方程具有更
变为积分问题则初值问题
00
00
'
, yxycdxxgy
yxy
xgy
6.1.1
浙江大学研究生学位课程
《实用数值计算方法》 8
6.1.2 数值解及其重要性
难以求积。而
的解是
例如但仍然得不到精确解。量的显示形式,有的解可以表示为自变
故得不到精确解。不能表示为初等函数,
例如方程不定积分的组合表示。及其的解很少能用初等函数
x t
x tx
dte
dteexy
xyy
yxy
ODE
0
0
'
22'
2
22
21
浙江大学研究生学位课程
《实用数值计算方法》 9
6.1.3 ODE 数值解的基本思想和方法特点
基本思想有两点
1. 离散化
用 Taylor 级数,数值积分和差商
逼近导数等手段,把 ODE 转化为离散
的代数方程 ( 称差分方程 ) 。
2. 递推化
在具有唯一解的条件下,通过
步进法逐步计算出解在一系列离散
点上的值。从而得到原 ODE 的数值
近似解。
浙江大学研究生学位课程
《实用数值计算方法》 10
6.2 初值问题解法
我们讨论一阶 ODE ,而高阶可
能化为一阶 ODEs 。一阶初值问题
可以一般地写成:
86,,
00
0
yxy
Xxxyxfdx
dy
6.2.1 欧拉( Euler )方法
Euler 方法是求解 (6-8) 最简单方法,
但精度差,故不实用。然而对理论分
析很有用。
浙江大学研究生学位课程
《实用数值计算方法》 11
6.2.1.1 方法原理及推导
设初值问题 (6-8) 满足:
2121
21
0
,,
,,,,,0
)
,:)
yyLyxfyxf
RyxyxL
Lipschitzyfb
yXxxRfa
对常数条件:满足关于
内连续。在区域
内有界。在
条件来代替:验的可用更强的,但便于检
就存在唯一的解。那么
Ry
f
ba
)),
86
6.2.1
浙江大学研究生学位课程
《实用数值计算方法》 12
为变步长。则称
上述划分是任意的:称为定步长。若其中
等分,得到节点分成把
1
11
0
0
0
,,2,1
,,1,0
:,
i
iii
i
i
h
nihxx
nxXh
niihxx
xnXx
11110 xxxxx
0y
0y
0y
6.2.1
图 6.1 常微分方程初值问题的数值解
浙江大学研究生学位课程
《实用数值计算方法》 13
公式。称为的近似。作为
于是,我们取
故。其中
级数构造:用
Eulerxy
niyxy
yxhfyy
ni
xyxhfxy
xhyxyxy
xx
yh
xhyxyhxy
Taylori
i
iiii
iii
iii
ii
i
iii
96
961,,1,0
,
1,,1,0
,
2
)
1
00
1
'1
1
''2
'
6.2.1
浙江大学研究生学位课程
《实用数值计算方法》 14
欧拉方法的几何意义:
nx
Xxxx 210
0y
Xy
ny
1xy
2xy
1y
2y
h 步长
6.2.1
图 6.2 Euler 方法的几何意义
浙江大学研究生学位课程
《实用数值计算方法》 15
余项,得:分,舍去若用梯形公式来计算积
。公式得
即并使得舍去余项
分,得并用左矩形公式计算积令
改写成积分形式把
用数值积分法构造
96
,,
,
,
,
86
)
1
Euler
yhxyR
Rxyxhfxyhxy
xx
dxxyxfxyhxy
ii
iii
iiiii
i
hx
x
1061,,1,0
,,2
00
111
niyxy
yxfyxfh
yy iiiiii
6.2.1
浙江大学研究生学位课程
《实用数值计算方法》 16
:改为以下预估一校正式一般地,把隐式格式
隐式。半隐法:可化为显式的
公式隐式:如改进的
公式显式:如
全部算出可计算单步法:由
公式。称为改进的这个公式
106
)
106)
96)
)
)96(
1
e
Eulerd
Eulerc
yyya
Euler
iii
1161,,1,0
,,2
,
00
0111
01
niyxy
yxfyxfh
yy
yxhfyy
iiiiii
iiii
校正
予估
6.2.1
浙江大学研究生学位课程
《实用数值计算方法》 17
6.2.1
0x 2ix 1ix 2ixix1ix nx
多步法
单步法
自动起步
显式
隐式
半隐式
图 6.3 ODE 求解方法的类型
浙江大学研究生学位课程
《实用数值计算方法》 18
hvss
hvv
s
v
Euler
gm
v
s
vdt
ds
mgdt
dv
ts
ts
mgdt
sd
mmm
mm
11
1
0
0
0'
0
2
2
10
0
10
.10,1
100
0010
0
方法:则:由加速度令质量
初值问题:
2
0
0
5
10
ttvts
tvtv
真解:
m t vm sm m t vm sm s(t)
0
1
2
3
4
0.
1.
2.
3.
4.
10.
0.
-10.
-20.
-30.
0.
10.
10.
0.
-20.
012345678
0.0.50.
-5.0-10.-15.-20.-25.-30.
10.5.0.-5.
-10.-15.-20.-25.-30.
0.5.7.57.55.0.
-7.5-17.5-30.
0.3.75
5.3.75
0.-6.25-15.
26.25-40.
0.1h 5.0h
表 6.1 自由落体运动方程的 Euler 公式求解
6.2.1
浙江大学研究生学位课程
《实用数值计算方法》 19
t4321 t4321
40
30
20
10
0
10
40
30
20
10
0
10
v s
图 6.4 运动轨迹
6.2.1
浙江大学研究生学位课程
《实用数值计算方法》 20
图 6.5 Euler 公式的误差
6.2.1.2 Euler 方法的误差估计
一般其它方法的误差估计也类似。
这里误差是指截断误差 ( 算法理论误
差 )
而不是舍入误差。后者由计算机字
长等决定,属于稳定性问题。 i) 几何分析
ii yxy
iy
ix 1ix
1ixy1iy
xy
iiii yxhfyy ,1
6.2.1
浙江大学研究生学位课程
《实用数值计算方法》 21
6.2.1
证明作为习题)
这里:
或
有方法而对改进的
或
则有
若满足生。称为该误差由当前一步所产
有是精确的,则对设定量分析
(
,,
,2
106
,2
,,
!2
96
)
0'''
33
22
0''
''2
11
XxxMxy
hORMh
R
Euler
hORMh
R
XxxMxy
Ryh
yxy
xyy
ii
ii
ii
iiii
ii
局部截断误差,
浙江大学研究生学位课程
《实用数值计算方法》 22
6.2.1
整体截断误差:设 ym 是 Euler 公式( 6-9 )
精确解,而 y(x) 是初值问题( 6-8 )的解。
则 整体截断误差定义为
它是局部截断误差的积累。
定理:若 f(x,y) 关于 y 满足 Lipschitz 条件。
则有估计式: )126()1(01 LXLX
m ehL
Re
的步长的区间上限局部截断误差上界
常数
xh
xX
R
LipschitzL
mmm xyy
浙江大学研究生学位课程
《实用数值计算方法》 23
6.2.1
hL
hLRhL
hLRhL
hLRhL
RhL
Rxyxfyxfh
Rxyxhfxyhxy
yxhfyy
mm
m
j
jm
m
mm
mmmmmmm
mmmmm
mmmm
111
11
111
1
,,
,
,
1
01
00
1
12
1
1
1
递推
相减得:
证明:
浙江大学研究生学位课程
《实用数值计算方法》 24
6.2.1
。方法,对改进
同阶。整体截断误差与方法的说明可记为
上式得:
代入,将若
于是得:
注意到:
2
1
2
000
01
11
1
,
12
20
,2,1,0
1
11
1
hOEuler
h
EulerhO
eL
hM
Mh
Rxyy
m
ehL
Re
ehLhL
Xhmx
m
m
LXm
LXLXm
LXXh
m
m
ex
x
x
11lim
浙江大学研究生学位课程
《实用数值计算方法》 25
6.2.1
立是差分方程的解,若成初值问题的解是收敛性:设
收敛性、稳定性讨论
使用上述结果。是不知道的。因此难以
的估计式中的实际上,
误差容易估计。决定,但局部方法的精度由整体误差误差低一阶。一般来说,整体比局部
说明:
my
ODExy
MMxyiii
ii
i
,
.3.1.2.6
''
0maxlim10
mm
nmhxyy
浙江大学研究生学位课程
《实用数值计算方法》 26
6.2.1
况。严格定义为:的差分方程解的变化情
初值的改变导致公式
不能无限缩小。所以实际上对对解的影响。误差的积累可能扩大了
时离散点增多。舍入当方法是收敛的,且阶为
。则称差分方程是收敛的
96
0
h
h
hOEuler
注意:
稳定性:
,2,1,
,0
,
,,,,
00
0
000
mvucvu
Xmhhh
vu
vuhc
mm
mm
对当满足:
它们的解使对定义:
浙江大学研究生学位课程
《实用数值计算方法》 27
6.2.1
证毕。
证明:记
方法是稳定的。则条件,的事实上,若
方法是稳定的。则称
0
01
1
1
1
1
1
,,
,
,
,
LX
m
m
mmmmmm
mmmm
mmmm
mmm
e
hL
hL
vxfuxfh
vxhfvv
uxhfuu
vu
Euler
Lipschizyxf
Euler
浙江大学研究生学位课程
《实用数值计算方法》 28
6.2.1
的区域范围。的存在稳定实际上,对给定的问题
为常数。这里
可推知
和初值,由对给定的步长
。而不是总是适当大小,限状况。实际计算中,
一种极对以后解的影响。它是始误差时,初稳定性实际上描述了当
0
0
,
0
0
yh
c
mncxyy
xyy
h
h
h
nn
mm
绝对稳定:
浙江大学研究生学位课程
《实用数值计算方法》 29
6.2.1
时可提高一阶精度。
故取
:的一次项为组合后,可使
时,有而步长为
法的近似解:
外推法外推技巧
xyxyxy
h
h
hchcxyxy
Euler
Richardson
hh
h
2
221
2
0
2
.4.1.2.6
221
2
4
1
2
1hchcxyxy
h
222 hOxyxyxy hh
浙江大学研究生学位课程
《实用数值计算方法》 30
6.2.1
阶精度。它具有
故可取
则
阶方法计算若用
1
122
1462
136
:,
12
12
1
2
p
hOxyxyxy
hOhcxyxy
hOhcxyxy
xyxyp
pphhp
Ppp
ph
ppp
h
hh
156212
1 2
xyxyxy hhpp
浙江大学研究生学位课程
《实用数值计算方法》 31
6.2.1
12 21
146136
ppp
phh hOhCxyxy
:,由估计。外推法用于实用的误差
。和误差估计的有效方法外推法是提高精度
因此
故
Richardson
xyxyhChh
p
pp
p 16612
2 2
浙江大学研究生学位课程
《实用数值计算方法》 32
6.2.1
。果见表预估校正方法。比较结用的数值解求用其真解为
例:
2.6
1.0,21
10
1,0,2
Euler
hxy
y
xy
xy
dx
dy
xi yi y(xi)
0.00.10.20.30.40.50.60.70.80.91.0
1.01.09591.18411.26621.34341.41641.48601.55251.61651.67821.7379
1.01.09541.18321.26491.34161.41421.48321.54921.61251.67331.7321
表 6.2 予估校正求解结果对比
浙江大学研究生学位课程
《实用数值计算方法》 33
6.2.1
时的解及误差估计:技巧解此方程,方法及外推。用其真解为
例:
1
10
1,0'
x
Eulerey
y
xyy
x
1
1/2
1/4
1/8
1/16
1/32
.00000
.25000
.31641
.34361
.35607
.36206
.50000
.38281
.37081
.36854
.36804
.36792
-.36788
-.11788
-.05141
-.02427
-.01181
-.00582
-.5000
-.13281
-.05441
-.02493
-.01196
-.00586
.13212
.01493
.00293
.00066
.00016
.00004
h hy hh yy 22 hy 估计 外推
表 6.3 Euler 法与外推结果的比较
浙江大学研究生学位课程
《实用数值计算方法》 34
6.2.2 线性多步法
1
1
11
,1
1
1
1
00
10
:,
,
,,
1.2.2.6
,,1,
,,,
m
m
m
m
m
m
m
m
x
x kmmm
mkmkm
x
xmm
x
x
x
x
m
ii
m
dxxLyy
yxf
xxxLagrange
dxyxfxyxy
dxyxfdyyxfdx
dy
y
mixyyxyy
xxx
的插值多项式近似
上,,,在用
插值法
欲求
处已求得:假定在
外插法:Adams
外插
浙江大学研究生学位课程
《实用数值计算方法》 35
6.2.2
k
iimkimm
imimim
im
kmmmimk
k
i imimk
imkimkm
fbhyy
Adams
kiyxff
ki
xx
xxxxxxxD
xD
xDfxL
01
1,
0 ,
,,
,,1,0,
,,1,0
外插值公式:由此得
这里:
()
方法。时,线性多步法就是特别,当
。其值见表
其中
Eulerk
dxxD
xD
hb
m
m
x
ximimk
imkki
0
4.6
1 1
,
,
()
浙江大学研究生学位课程
《实用数值计算方法》 36
6.2.2
i 0 1 2 3 4 5
b0i
2 b1I
12 b2I
24 b3I
720 b4I
1440 b5i
13
2355
19014277
-1-16-59
-2774-7923
537
26169982
-9-1274-7298
2512877 -475
211 5162312
2
mmmmm fffh
yy
k 时,线性多步法为例如:
Adams 外插法 (k=2) 3 阶 3 步 显式
2m
1m
m
表 6.4 外插系数 bki 值
图 6.6 3 阶 3 步外插法
浙江大学研究生学位课程
《实用数值计算方法》 37
6.2.2
,舍入误差也小。内插法较外插法更精确
最常用,其插值公式为
法。时,即得到改进当。它是隐式或半隐式格式
:多项式的
取插值节点为
内插法:
1
1,1
,,,,
,
p
Eulerkp
xLLagrange
xxx
Adams
pkm
pmmpkm
1
,1
m
m
x
x
pkmmm dxxLyy
。见表其中 5.6
011
i
i
k
k
iimkmm
b
fbhyy
浙江大学研究生学位课程
《实用数值计算方法》 38
6.2.2
i 0 1 2 3 4 5
b0i*
2 b1i*
12 b2i*
24 b3i*
720 b4i*
1440 b5i*
1159
251475
18
19646
1427
-1-5
-264-798
1106482
-19-173 27
值内插系数表 kib5.6
111 8512
12
mmmmm fffh
yy
pk 时,线性多步法为,例如:
Adams 外插法 (k=2) 4 阶 3 步
1m1m m
图 6.7 4 步 3 阶 Adams 内插公式
浙江大学研究生学位课程
《实用数值计算方法》 39
6.2.2
外插法:不稳定。稳定内插法:舍入误差小,
稳定性:
单。外插法:显式,计算简,复杂内插法:隐式或半隐式
迭代格式:
阶方法外插法:
阶方法内插法:
局部截断误差:
)
)
1
2
)
2
3
iii
ii
khO
khO
i
k
k
1p
浙江大学研究生学位课程
《实用数值计算方法》 40
6.2.2
k
iii
k
ii
ihxyhihxyhxy
k
k
0
'
00 0,
,0
,
2.2.2.6
;
定义算符:
步法不同时为步法线性多步法是常数
一般的插值型公式
待定系数法
k
i
k
iimiimi fhy
0 0
1k取
浙江大学研究生学位课程
《实用数值计算方法》 41
6.2.2
0x 1mx mx 1mx kmx
my
nk
k
nk
k
k
f
f
h
y
y
y
0
0
0
1
0
0
0
0
mmm yxff
hkN
,
,1
个方程。等步长
图 6.8 一般化插值形式
浙江大学研究生学位课程
《实用数值计算方法》 42
6.2.2
krr
krr
r
k
iii
k
rrr
kr
kr
C
iC
C
xyhC
xhyCxyChxy
xyih
xihyxyihxy
xyih
xihyxyihxy
Taylor
12
11
21
01
100
'10
'''2
''''
''2
'
2!1
1
2!
1
!2
!2
其中:
;
代入得:
展开右端:
浙江大学研究生学位课程
《实用数值计算方法》 43
6.2.2
步方法。阶阶及外插及内插法为
隐式显式
由此得
于是:充分大,使
次连续可微,则可取有因此,若
k
kkAdams
xyhCfhy
CCCk
rxy
k
k
k
i
rrrihxii
r
1
0
0
.0
1
0
111
10
k
i
k
iimiimi fhy
kr
0 0
步方法:阶线性
浙江大学研究生学位课程
《实用数值计算方法》 44
6.2.2
ak 02 ,1,2
2
记步法:例,考虑
04!2
18
!3
1
024!2
1
02
01
2113
2112
21011
10
C
C
C
aC
解之得:
a
a
a
a
512
1
13
2
,5112
1
,1
2
1
0
1
浙江大学研究生学位课程
《实用数值计算方法》 45
6.2.2
方法型:它是以下
阶方法时,阶的方法是时,
故
同时,可以算出:
故一般二步法为:
eMiSimpson
CCa
Ca
ln
40,01
3,01
54
4
mmm
mmm
fafafah
ayyay
5118512
1
12
12
aC
aC
1317!53
1
1!4
1
5
4
mmmmm fffh
yy 122 43
浙江大学研究生学位课程
《实用数值计算方法》 46
6.2.2
1,1
01
0,2
11
1
3.2.2.6
11
1
'
即特征根
的特征方程:
步长方法:例
对典型方程:
绝对稳定性
h
h
hh
h
yh
yhy
hfyy
hEuler
yy
m
mm
mmm
来讨论绝对稳定性)程一般只限于这个典型方(
浙江大学研究生学位课程
《实用数值计算方法》 47
6.2.2
稳定可以任意取,步长
时,恒有当
其特征根为
隐式方法例,后退
A
h
h
yh
y
yhy
hyyy
Euler
mm
mm
mmm
10Re
1
1
1
1
1
1
1
1
'11
图 6.9
浙江大学研究生学位课程
《实用数值计算方法》 48
6.2.2
线性多步法的绝对稳定性:
次多项式的
其特征方程为
多步法为
典型方程则
常数设
k
hh
yhy
yy
y
f
k
iimi
k
iimi
00
'
k
i
imi
k
i
imi h
00
0
浙江大学研究生学位课程
《实用数值计算方法》 49
6.2.2
定义:
,称为,取值范围绝对稳定的
则称线性多步法关于此
,按模小于,若特征方程的根给定
h
h
h i 1
绝对稳定。
绝对稳定区域。
.0,,0,
01
01
1
0
1
0
1
EI
k
i
ik
k
k
i
ik
k
i
i
bh
bh
Adams
其稳定区域为
程:内插及外插法的特征方
浙江大学研究生学位课程
《实用数值计算方法》 50
6.2.2
的取值表 EI ,5.6
k 1 2 3 4
E
2 1
I
6 3
11
6
49
90
10
3
5
3
1
2
5
1
2
22
03
11
3
4
31
143
1
hOe
hOe
hhh
h
h
h
它的根:
方法的特征方程Milne
浙江大学研究生学位课程
《实用数值计算方法》 51
6.2.2
:见表及误差,得到的解对不同的
方法计算例,用对稳定。
方法不绝,因此,对任何
6.6
10
10
ln
ln
'
yh
y
yy
eMi
eMih
h u 误 差0.1
0.010.001
0.00010.00001
.486E-4
.482E-4
.386E-4
.329E-4
.578E-4
-.323E-5-.281E-5.676E-5-.375E-4-.124E-4
表 6.6 计算结果
浙江大学研究生学位课程
《实用数值计算方法》 52
6.2.2
6.2.2.4 预估 -- 校正方法
( Predictor--Corrector Method )
迭代法。这是个非线性方程已知。,,,,,其中
阶隐式方法:但计算困难。现考虑
其精度高,稳定性好。尤
隐式方法:
110
0
kify
k
y
f
imim
176
,
1
0
1
0
k
iimi
k
ikmkmkimikm
fh
yxfhyy
,,
,
10
1861
0
1
0
1
n
fh
yxfhyy
k
iimi
k
i
nkmkimi
nkm km
浙江大学研究生学位课程
《实用数值计算方法》 53
6.2.2
。此时应减小步长
。太多的校正不合适。可满足
二,三步校正。,一般只要对给定
算法。通称为
算式。称为校正式,即算式。称为预估式,即
构成的算法,时,
选为显式算法而
h
yy
PC
CCorrector
Pedictor
y
nkm
nkm
km
1
0
0
196
Pr186
196186
1961
0
1
0
0
k
i
k
iimiimikm fhyy
浙江大学研究生学位课程
《实用数值计算方法》 54
6.2.2
注意:一步校正的计算量 预估计算量。
所以要适当选取 h 才能发挥 PC 的优点。
设绝对稳定区域:
达到精度的校正次数为 N ,则 h 的选取,
应满足:
否则可用 N 步显式算法稳定达到目的。
0,
0,
c
p
SC
SP
算式:
算式:
p
cp
SNh
ShS
1.2
.1
hmx 1mx
pS
cS
2N
浙江大学研究生学位课程
《实用数值计算方法》 55
6.2.2
Adams 四步四阶预估校正算法
123434
12334
93759924
:54
937595524
:44
mmmmmm
mmmmmm
ffffh
yyC
ffffh
yyP
阶步
阶步
?0
,,
270
19
04
14
044
144
04
14
555
,
稳定性判别可用
很大的麻烦但变步长会带来可用来控制步长
方法误差:
C
mm
mmmm
mm
Sy
fhh
yy
yxfyxf
y
f
h
yyyhC
浙江大学研究生学位课程
《实用数值计算方法》 56
6.2.3 Runge--Kutta 方法
,考虑为构造高精度的单步法。后者比前者精度高一阶
型预估一校正法:
方法:
12
1
211
1
11
,
,2
1
2
1
,
KyhxhfK
yxhfK
KKyy
Euler
yxhfK
Kyy
Euler
mm
mm
mm
mm
mm
12
21
, mm
mm
yhxhfk
kyy
Euler法后退
浙江大学研究生学位课程
《实用数值计算方法》 57
6.2.3
方法的级正整数,称为 KRN
Niba
KbhyhaxfK
yxfK
KChyx
hyxhyy
i
lili
i
llilmimi
mm
N
iiimm
mmmm
,,3,2
,
,
,,
,,
1
1
1
1
1
1
1
上的线性组合:在某些点是而 1, mm xxf
其中:
阶次项一致),,,即项完全一致。级数。取的
展开,并比较进行把
PP
PTaylor
xyTaylorK mi
10(
11
浙江大学研究生学位课程
《实用数值计算方法》 58
6.2.3
时,有当
公式的阶数。称为这里的
就可以得到系数
3
N
KRP
1,,1;,,1, ilNibC ili
232132333
1222
1
3
11
,
,
,
KhbKbahyhaxfK
KhayhaxfK
fyxfK
KChyy
mm
mm
mmm
iiimm
浙江大学研究生学位课程
《实用数值计算方法》 59
6.2.3
的系数得:比较
而
其中:
展开:在将
3,2,1,0
6
12
2
22
,,
43
2
2
''
3233
2223223
2
3
13322321
32
ih
hOGFfh
Fh
hfxyhxy
fffffG
xyfffF
hOGaCaCFfbaCh
FaCaChfCCCKC
TayloryxKK
i
y
mm
yyxyxx
yx
y
iii
mm
浙江大学研究生学位课程
《实用数值计算方法》 60
6.2.3
6
13
12
1
1
3223
233
222
3322
321
baC
aCaC
aCaC
CCC
六个未知数,二个自由,故可取
212
16
1
3
2
6
1
3232
321
baa
CCC
,,
,,
213
12
1
3211
2
2
1
2
1
,
46
1
hKhKyhxfK
hKyhxfK
yxfK
KKKhyy
mm
mm
mm
mm
,
,
故:
浙江大学研究生学位课程
《实用数值计算方法》 61
6.2.3
N=4: 四级四阶 R--K 方法
34
23
12
1
43211
,
2
1,
2
1
2
1,
2
1
,
226
hKyhxfK
hKyhxfK
hKyhxfK
yxfK
KKKKh
yy
mm
mm
mm
mm
mm
---- 最常用的古典 Runge-Kutta 方法。
增加计算函数值的次数(级)与提高精
度(阶)的关系见下表:
级 N 2 3 4 5 6 7 n8
阶 P 2 3 4 4 5 6 n 2
表 6.7 Runge-Kutta 方法中级与阶的关系
浙江大学研究生学位课程
《实用数值计算方法》 62
6.2.3
各种解法精度比较:
例
高精度方法的主要优缺点
10
22
).1(2'
y
yxxy
KR
Xm Euler 改进 Euler R—K(4阶) 精确解0.00.10.20.30.40.50.60.70.80.91.0
1.00001.20001.44201.73842.10412.55693.11833.81394.67475.73767.0472
1.00001.22101.49231.82842.24662.76803.41744.22575.22886.47048.0032
1.00001.22211.49771.84322.27832.82743.52014.39275.48946.86438.5834
1.00001.22211.49771.84322.27832.82743.52024.39285.48956.86458.5836
表 6.8 各种解法在例题中的结果比较
浙江大学研究生学位课程
《实用数值计算方法》 63
6.2.3
( 2 ) . 单步法,自动起步
( 3 ) . 易改为变步长
( 4 ) . 绝对稳定区域较同阶线性多步法大
( 5 ) . 计算工作量较大,有时大于隐式方法
( 6 ) . 估计误差不易
绝对稳定性讨论
mm
mm
yhh
hy
fh
fh
hfyy
yyN
33
22
''3
'2
1
'
!3!2
!3!2
3
此时:
为例。取典型方程以
浙江大学研究生学位课程
《实用数值计算方法》 64
6.2.3
D
KR
h
hhh
hhh
y
yhh
hy
mm
imim
mm
区域方法的绝对稳定一般地,各级
时,,当
其根为:
故特征方程:
1051.2
6
1
2
11
06
1
2
11
!3!21
1
32
1
321
32
1
级 1 D
1
2
3
4
(-2,0)
(-2,0)
(-2.51,0)
(-2.78,0)432
32
2
24
1
6
1
2
11
6
1
2
11
2
11
1
hhhh
hhh
hh
h
表 6.9 各级 R-K 方法的绝对稳定区域
浙江大学研究生学位课程
《实用数值计算方法》 65
6.2.3
0,78.24,2.0
0,78.222.0
10
20
22
11
'
hh
hh
y
yy
KR
h
hKR
,取
方法计算用四级经典例
绝对稳定区域。
使方法时,要取在使用
x h1时的误差 h2时的误差
0.00.20.40.60.81.0
0-0.092795-0.012010-0.001366-0.000152-0.000017
04.9825.0125.0625.0
3125.0
表 6.10 不同步长对精度的影响
浙江大学研究生学位课程
《实用数值计算方法》 66
6.2.3
。可能导致舍入误差积累的计算量,步长太小:增加不必要非绝对稳定。步长太大:精度不够,
实际步长选取:
外推技巧。需用选取误差估计和实际步长的
属于绝对稳定区域。
近似确定步长。使可以用
常数的问题对于
Richardson
xhxh
x
xy
f
mm
浙江大学研究生学位课程
《实用数值计算方法》 67
6.2.3
是适当的。,则认为,若对给定
误差估计
方法:对四阶
方法自选步长的
2
12
2
2
11
2
2114
44
544
211
54
121
5411
h
yych
hOchyy
hOh
cxyy
hOchxyy
KR
KR
hm
hm
hm
hm
mh
m
mh
m
浙江大学研究生学位课程
《实用数值计算方法》 68
P 阶图 6.10 变步长 Runge--Kutta 方法框图
00,0
,,,
xyym
PhX
给定
211
211
max
,hm
hm
hm
hm
yy
yy
计算
hmm
mm
yy
hxx
11
1
hh 2
Xxm 1
12
1
P ,2,1
,
m
yx mm输出 hh 2
1mm
Y
Y
N
NY
N
hh
25.0
9.0
hh 4
hh
2.0
9.0
5
4
9.0
6.2.3
浙江大学研究生学位课程
《实用数值计算方法》 69
展开:处在 TayloryxKK mm ,, 32
xym
yym
xx
ymxm
m
m
m
m
m
m
mm
m
fKbfbaah
fKbfbah
fha
fKbfbahfhafK
yx
ffha
y
ffha
x
fha
y
ffha
x
fhafK
23232332
2232323
223
23232333
22
22
222
2
222
222
!2!2
!2!2
11
1
1
1
1
1
11
!
,,3,2
,
,
PP
mP
mm
i
jiij
i
jjijmimi
mmm
N
iiimm
hOP
hxyxyxy
ab
Ni
KbhyhaxfK
fyxfK
KChyy
6.2.3
浙江大学研究生学位课程
《实用数值计算方法》 70
1.0
00
0!
0!2
0!1
0
)
)
,,,
,,,
2'
1
1
''2
'
110
11
h
y
yxy
Taylor
R
Rys
x
yx
yx
yxy
Taylorxyb
KR
a
yyy
kyyyy
s
ss
s
k
kmkmmm
前三个点的值
级数求初值问题例:用不影响所需精度为止。直至
展开式:的用精确解计算所需点上的值。
方法,或用小步长高精度用单步法求出
方法取得。的值可以通过两种出发值
步方法
6.2.4 出发值的计算
浙江大学研究生学位课程
《实用数值计算方法》 71
0049995000.000050005000.0
160
1
20
1
2
1
0000000
0
721352
615102
5102
432
32
2
21
,,
101
852
764''''
76'5''4'''8
65'4''2'''7
54''''''6
4''''2''5
''''''4
''2''''
'''
2'
2
yyy
xxxxy
yyyyyy
x
yyyyyyyyxy
yyyyyyyxy
yyyyyyxy
yyyyyxy
yyyyxy
yyyxy
yyxy
yxxy
yxyxf
,,
于是,
时,故
所以解:由于
25206010 85'' yyy ,,
得,,,取前三点 1.00 101 hhxxhx
6.2.4
浙江大学研究生学位课程
《实用数值计算方法》 72
质量控制 Runge--Kutta 步进程序SUBROUTINE RKQC(Y, DYDX, N, X, HTRY,EPS,YSCAL,HDID,HNEXT,DERIVS)
PARAMETER (NMAX=10, PGROW=-0.20, PSHRINK=-0.25, FCOR=1./15.
ONE=1.0, SAFETY=0.9, ERRCON=6.E-4
EXTERNAL DERIVS
DIMENSION Y(N), DYSX(N), YSCAL(N), YTEMP(NMAX), YSAV(NMAX),
DYSAV(NMAX)
XSAV=X 保留初值DO 11 I=1 , N
YSAV(I)=Y(I)
DYSAV(I)=DYDX(I)
H=HTRY
HH=0.5H
CALL RK4 (YSAV, DYSAV, N, XSAV, HH, YTEMP, DERIVS)
X=XSAV+HH
CALL DERIVS (X, YTEMP, DYDX)
CALL RK4 (YTMP, DYDX, N, X, HH, Y, DERIVS)
X=XSAV+H
IF (X. EQ. XSAV) PAUS E ‘ 步长无意义’CALL RK4 (YSAV, DYSAV, N, XSAV, HH, YTEMP, DERIVS)
ERRMAX=0.
DO 12 I=1 , N
YTEMP(I)=Y(I)-YTEMP(I)
ERRMAX = MAX(ERRMAX, ABS(YTEMP(I) / YSCAL(I)))
ERRMAX = ERRMAX / EPS
误差计算
一个单步计算
两个半步长计算
置初始值
11
1
12
6.2.4
浙江大学研究生学位课程
《实用数值计算方法》 73
PARAMETER (NVAR=4)DIMENSION VS(NVAR)COMMON /PATH/ KMAX , KOUNT , DXSAV , X(200) , Y(10 ,200)EXTERNAL DERIVS RKQC
X1=1.0
X2=10.0
VS(1)=BESSO(X1)
VS(2)=BESSI(X1)
VS(3)=BESSJ(2,X1)
VS(4)=BESSJ(3,X1)EPS=1.0E-4HI=1.0HMIN=0.0KMAX=100
DXSAV=(X1-X2)/20.0
CALL ODEINT (VS , NVAR , X1 , X2 , EPS , HI , HMIN , NOK NBAD , NOK , NBAD , DERIVS , RKQC)WRITE ( , ) ENDSUBROUTINE DERIVS (X , Y , DYDX)DIMENSION Y(1) , DYDX(1)DYDX(1) = -Y(2)DYDX(2) = Y(1)-(1.0/X) Y(2)DYDX(3) = Y(2)-(2.0/X) Y(3)DYDX(4) = Y(3)-(3.0/X) Y(4)RETURNEND
6.2.4
浙江大学研究生学位课程
《实用数值计算方法》 74
IF (ERRMAX.GT.ONE) THEN 不满足要求
H = SAFETY H (ERRMAX PSHRINK) 估计下次步长(缩小)
GOTO 1
ELSE 满足要求
HDID = H
IF (ERRMAX. GT. ERRCON) THEN
HNEXT = SAFETY H (ERRMAX PGROW) 估计可放大的步长
ELSE
HNEXT =4. H 最多可放大四倍
ENDIF
ENDIF
DO 13 I=1 , N 完成五阶截断误差
Y(I)=Y(I) + YTEMP(I) FCOR
CONTINUE
RETURN
END
四阶 Runge--Kutta 步进程序(续)
13
6.2.4
浙江大学研究生学位课程
《实用数值计算方法》 75
计算结果
NOK=30
NBAD=0
KOUNT=15
X Integral BESSJ(3,x)1.00001.63292.10362.68133.37694.10394.79105.51426.14256.84137.49598.21128.91749.5855
10.0000
0.0195630.0765640.1458820.2505440.3701150.4333980.3963840.2524600.071710-0.129104-0.257536-0.286393-0.197389-0.0439680.058380
0.145881
0.4333970.396383
-0.129103-0.257535-0.286391-0.197388
0.058379
6.2.4
浙江大学研究生学位课程
《实用数值计算方法》 76
四阶 Runge--Kutta 方法:
SUBROUTINE RK4(Y , DYDX , N , X , H , YOUT , DERIVS)
PARAMETER (NMAX=10)
DIMENSION Y(N) , DYDX(N) , YOUT(N) , YT(NMAX)
DYT(NMAX) , DYM(NMAX)
HH=H 0.5
H6=H/6.0
XH=X+HH
DO 11 I=1 , N
YT(I)=Y(I)+HH DYDX(I) 第一步
CALL DERIVS(XH , YT , DYT)
DO 12 I=1 , N 第二步
YT(I)=Y(I)+HH DYT(I)
CALL DERIVS(XH , YT , DYM)
DO 13 I=1 , N 第三步
YT(I)=Y(I)+H DYM(I)
DYM(I)=DYT(I) + DYM(I)
CALL DERIVS(X+H , YT , DYT)
DO 14 I=1 , N
YOUT(I)=DYDX(I)+DYT(I)+2. DYM(I)
YOUT(I)=Y(I) + H6 YOUT(I)
CONTINUE
RETURN
END
14
13
12
11
6.2.4
浙江大学研究生学位课程
《实用数值计算方法》 77
用四阶 RUNGE--KUTTA 公式,等步长计算 NSTEP 步SUBROUTINE RKDUMB(VSTART , NVAR , X1 , X2 , NSTEP , DERIVS)
PARAMETER (NMAX=10) 函数最大个数
COMMON /PATH/ XX(200) , Y(10,200)
DIMENSION VSTART(NVAR) , V(NMAX) , DV(NMAX)
置初值
DO 13 K=1 , NSTEP
CALL DERIVS(X , V , DV)
CALL RK4(V , DV , ,NVAR , X , H , V , DERIVS)
X=X+H
XX(K+1)=X 存贮中间步骤
DO 12 I=1 , NVAR
Y(I , K+1)=V(I)
CONTINUE
CONTINUE
结束返回
12
13
6.2.4
浙江大学研究生学位课程
《实用数值计算方法》 78
带自适应步长控制的四阶 Runge--Kutta 驱动程序SUBROUTINE ODEINT(YSTART , NVAR , X1 , X2 , EPS , H1
HMIN , NOK , NBAD , DERIVS, , RKQC)
PARAMETER (MAXSTEP=10000,NMAX=10,TWO=2.0,
ZERO=0.0,TINY=1.0E-30)
COMMON /PATH/ KMAX , KOUNT , DXSAV , XP(200) , YP(10,200)
DIMENSION YSTART(NVAR) , YSCAL(NMAX) , Y(NMAX) , DYDX(NMAX)
X=X1
H=SIGH(H1 , X2-X1)
NOK=0
NBAD=0
KOUNT=0
DO 11 I=1 , NVAR
Y(I)=YSTART(I)
XSAV=X-DXSAV TWO ---- 保证第一步存贮DO 16 NSTEP=1, MAXSTEP ---- 最多取 MAXSTEP 步数 CALL DERIVS(X , Y , DYDX)
DO 12 I=1 , NVAR 改变比例因子控制准确性 YSCAL(I)=ABS(Y(I))+ABS(H DYDX(I)) + TINY
IF(KMAX.GT.O.AND.ABS(X-XSAV).GT.ABS(DXSAV)
KOUNT. LT. KMAX-1) THEN
KOUNT=KOUNT+1
XP(KOUNT)=X
DO 13 I=1 , NVAR
YP(I , KOUNT)=Y(I)
XSAV=X
ENDIF
存贮中间结果
13
12
11
置初值
6.2.4
浙江大学研究生学位课程
《实用数值计算方法》 79
IF ((X+H-X2) (X+H-X1) .GT. ZERO) H=X2-X1 越界处理
CALL RKQC(Y , DYDX , NVAR , X,H,EPS,YSCAL,HDID,HNEXT,DERIVS)
IF (HDID. EQ. H) THEN
NOK=NOK+1 好步长计算
ELSE
NBAD=NBAD+1 坏步长计算
ENDIF
IF ((X-X2) (X2-X1). GE. ZERO) THEN 进行完毕
DO 14 I=1 , NVAR
YSTART(I)=Y(I)
IF (KMAX. NE. O) THEN 保留最终步结果
KOUNT=KOUNT+1
XP(KOUNT)=X
DO 15 I=1 , NVAR
YP(I , KOUNT)=Y(I)
ENDIF
RERURN
ENDIF
IF (ABS(HNEXT). LT. HMIN) PAUSE ' 步长太小 '
H=HNEXT
CONTINUE
PAUSE ' 步数太多,越界 '
RETURN
END
16
15
14
6.2.4
浙江大学研究生学位课程
《实用数值计算方法》 80
ii
hmm
hm
hm
mh
m
mh
m
yscale
sh
sh
hhh
h
h
hOyxy
hOchyy
hOh
cxyy
hOchxyy
KuttaRunge
kuttaRunge
max
12
2
21
2
0
10
25.0
1
01
10
2.0
1
01
0
2.0
1
010
00
11
54
21
545
211
54
121
5411
对方程组调整步长的依据。
当
当
实用上
应是误差的期望则有对提高精度(五阶方法)
例:
记
方法对四阶方法的自选步长进行误差控制
6.2.4
浙江大学研究生学位课程
《实用数值计算方法》 81
6.2.5 方程组与刚性问题 ( Stiff Sets of Equation )
1. 考虑 2 阶常微分方程组的初值问题:
20
2
10
1
2112
2111
0
0
,,
,,
yy
yy
yyxfdx
dy
yyxfdx
dy
解此方程组的 Euler 方法
22212221
11211111
,,
,,
mmmmmm
mmmmmm
hfyyyxhfyy
hfyyyxhfyy
浙江大学研究生学位课程
《实用数值计算方法》 82
6.2.5
也一样,但也完全类似。理论结果方法线性多步法及
是向量。其中,
:用向量形式记法,则有
KuttaRunge
fyfy
h
yxdx
d
mm
mmm
,,,
0
,
1
0
fyy
yy
fy
函数的绝对值 向量范数
偏微商 y
f
2
2
1
2
2
1
1
1
y
f
y
fy
f
y
f
浙江大学研究生学位课程
《实用数值计算方法》 83
6.2.5
满足当其特征根
为步长。,其中
为线性多步法的特征方程则有类似方程的结果:
的特征值为又设
方程组为矩阵时,则常系数线性
为常数矩阵设
ji
jj
j
hhh
njJ
xgJydx
dy
JacobiJy
f
,,2,1
)(
可能是复数
000
k
i
imij
K
i
imi h
kinjji ,,2,1,,2,11 ;
浙江大学研究生学位课程
《实用数值计算方法》 84
6.2.5
是复平面上的区域。它构成了绝对稳定区域这样的
使线性多步法时,则
,Rh
h
j
j 绝对收敛。
Adams 内插法的绝对稳定区域:
.3
.2
.1
.2
.3
0 .1
.2.4.6.7
2k
4k
3k
5k
图 6.11 Adams 内插法的绝对稳定区域
浙江大学研究生学位课程
《实用数值计算方法》 85
6.2.5
.1
.1
0.2
2k
4k
3k1k 5k
6k
图 6.12 Adams 外推法的绝对稳定区域
.3 .1
.1
.2
.3
图 6.13 R-K 法的绝对稳定区域
4k
3k
2k
1k
.2
浙江大学研究生学位课程
《实用数值计算方法》 86
6.2.5
2. 刚性方程组 ( Stiff Equations )
Ty
JJyy
h
Jy
fJacobi
hh
h
2,1,20
.120.70.0
0.50.0
07.491.0
,
' ,
例如的选取就有困难。时,
但当
的特征值。矩阵取遍
里属于绝对稳定区域。这使得
选步长为使算法绝对稳定,应
jj minmax
浙江大学研究生学位课程
《实用数值计算方法》 87
6.2.5
然而,由稳定性要求
部分很快可以不计。的,即对应适当大时,故当
其解为:
的特征值:
xy
eex
J
i
xx
21
12050
3
2
1
.0,
1.0
.50
.120
xx
x
xx
eexy
exy
eexy
120503
502
501.01
78.24
2
120
120CKR
CEuler
Ch
Ch
Chj
:阶方法:
浙江大学研究生学位课程
《实用数值计算方法》 88
6.2.5
导致解的面目全非。差积累将非绝对稳定,故舍入误
则因为来取步长如果按
增。只能取很小,工作量激故
,3 hCh
h
610
10
ReminRemax
ReminRemax
,,2,10Re
O
O
nj
gJydx
dy
jj
jj
jj
jj
j
且
如果
称为方程组
定义:
刚性方程:
一般坏条件问题严重坏条件问题
刚性比:
浙江大学研究生学位课程
《实用数值计算方法》 89
6.2.5
0Re
.3
,0
h
Xxxx
y
f
j
半平面:区域是左绝对稳定该算法的
刚性方程组的解法。
也称为刚性方程组。
上满足上述条件。在
的特征值对非线性方程组,
稳定:没有限制。其数值方法应当对
A
h
图 6.14 A- 稳定区域
浙江大学研究生学位课程
《实用数值计算方法》 90
6.2.5
一稳定:A
证明了:
,
是绝对稳定区域该数值方法的
Widlund
h
hW
o900
arg
隐式方法。
定是一稳定的线性多步法必A
图 6.15 一稳定区域A
浙江大学研究生学位课程
《实用数值计算方法》 91
6.2.5
k
ikmkimi
mmmm
mmm
fhy
Gearb
yyh
yy
hfyy
Euler
StiffAa
0
''11
11
)
2
)
方法:
重要因素但精度和计算工作量是
梯形公式:
公式:例如:后退方程组的求解。一稳定的算法均可用于
浙江大学研究生学位课程
《实用数值计算方法》 92
6.2.5
稳定)方法系数表(表 AGear11.6
K k
6
5
4
3
2
1
0
1
2
3
4
5
6
1
1
1
1
1
1
1 -1 900
900
880
730
510
180147
360
147
450137
300
147
400137
30025
48
11
18
25
36
137
200
147
225
4
3
11
9
25
16
137
75
147
72
3
1
11
2
25
3
137
12
147
10
3
2
11
6
25
12
137
60
147
60
浙江大学研究生学位课程
《实用数值计算方法》 93
6.2.5
Ni
KbhyhaxfK
KChyy
AKuttaRungec
Gear
Newton
h
y
fh
y
N
jjijmimi
N
iiimm
k
km
,,2,1
,
)
1
1
11
稳定方法隐式
程组。方法也适用于非刚性方法。一般采用修正
受到限制。步长
时,要求用迭代法求解
浙江大学研究生学位课程
《实用数值计算方法》 94
6.2.4
6
3
4
1
6
3
2
1
4
1
4
12
1
3
2
1
2
1
2
22
1
1
212
211
211
212
1
211
1
ba
hKbhKyahxfK
bhKhKyahxfK
KKhyy
KKhyhxfK
yxfK
KKhyy
hKyhxfK
hKyy
mm
mm
mm
mm
mm
mm
mm
mm
,
,
,
二级四阶
,
,
二级二阶
,
中点法(一级二阶)
浙江大学研究生学位课程
《实用数值计算方法》 95
mx 2mx1mx
Euler 法
一阶
mx 2mx1mx
mx 2mx1mx
中点法二阶(Runge--Kutta)
mx 1mx
四级四阶
RungeKutta
hxm 2
1 hxm 2
11
Euler 预估 -- 校正法
二阶
hxm 21
my
1my
6.2.4
浙江大学研究生学位课程
《实用数值计算方法》 96
6.3 边值问题解法
000 0000
10'
10'
''
'''
,,
第三边值条件:
,
第二边值条件:
,第一边值条件:
,,,
问题:二阶微分方程
byby
ayay
byay
byay
baxyyxfy
浙江大学研究生学位课程
《实用数值计算方法》 97
2212
1211
21
,,2,10,,,,
,,2,10,,,,
,,2,1,
,,,,
nkyyybB
njyyyaB
Nibax
yyyxfdx
xdy
Nk
Nj
Nii
一般地,
6.3.1 试射法( Shooting )
y
01 jB x
02 kB
图 6.16 试射法求解示意
浙江大学研究生学位课程
《实用数值计算方法》 98
6.3.1
的函数是显然直到满足条件。
问题。值,继续求解新的初值修改
则满足要求,否则若
设求得
,
,,
,则可解初值问题设
,,,
考虑第一边值问题
11
1
1
1
1'
'''
1'
'''
~ uuFby
u
v
vby
uayay
yyxfy
uay
byay
yyxfy
浙江大学研究生学位课程
《实用数值计算方法》 99
6.3.1
uGu
uGubyby
uGbyuGby
uayuay
uay
uFu
uuuu
FuuF
使要找
的函数是于是
设解为
,
:则问题变为解初值问题对第三边值问题,设
使得直到找到
:不知道的。用线性近似
是但的要求
,
~,~
,
.
,
0'
2'
1
01'
112
121
11
浙江大学研究生学位课程
《实用数值计算方法》 100
6.3.2 差分方法( Difference Methods )
(Relaxation Methods)
0x 1x 2x Mx
01 jB
02 kB
iy
True solution
2nd iteration
1st iteration
Initi
al g
uess
x
212
1101
021
,,10,,,
,,10,,,
,,,,,,
nkyyxB
njyyxB
xxxyyyxfdx
xdy
NMk
Nj
MNii
图 6.17 差分方法示意
浙江大学研究生学位课程
《实用数值计算方法》 101
6.3.2
:个方程由边值条件提供另外个。上述方程共有
未知数。共有
;:要求
的值在即其中,
还有别的方程可用用差分方程代替:
维向量是,
N
MN
MN
MkNjy
Mk
xyyyyy
Nfyyxfdx
dy
jk
kT
Nkkkk
1
,,1,0,,1
,,2,1
,,,,
,,
21
02
,2
1111
kkkkkkkkk
yyxxfxxyyE
Nnn
nyxBE
nyxBE
MMM
21
22'
10010
0,
0,
个个
浙江大学研究生学位课程
《实用数值计算方法》 102
6.3.2
2'
1
'
101
00
0
111
1
1 11
1
111
1
,,1
,,1
,,2,1;,,2,1
,0
,,
:,
njEyy
E
njEyy
E
MkNj
Eyy
Ey
y
E
yyE
yy
Ey
y
E
yyEyyyyE
yy
jM
N
iiM
iM
jM
j
N
ii
i
j
jk
N
iik
ik
jkN
iik
ik
jk
N
i
N
iik
ik
kik
ik
k
kkkkkkkk
kk
另外,由边值条件得
则有设
每次迭代有修正值
浙江大学研究生学位课程
《实用数值计算方法》 103
6.3.2
很大。很大时,矩阵的阶个特殊稀疏问题。当
它是一可解下面方程组求得。的修正量
时每次迭代当
NM
M
y
nnMN
jk
1
2,3,3,5 21
23'
13'53
43
33
23
12
52
42
32
22
12
51
41
31
21
11
30
20
10
53
43
33
23
13
52
42
32
22
12
51
41
31
21
11
50
40
30
20
10
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
图 6.18 修正值矩阵
浙江大学研究生学位课程
《实用数值计算方法》 104
块对角线性代数方程组的快速求解
利用矩阵的特殊结构使总运算次数达到极小,
并使矩阵系数的存贮达到极小
BV
BV
BV
BV
BV
BV
BV
BV
BV
BV
BV
BV
BV
BV
BV
BV
BV
BV
BV
BV
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
图 6.19 Gauss 消去法的目标结构
6.3.2
浙江大学研究生学位课程
《实用数值计算方法》 105
DDD
100
100ZZZZZ
10000000
DDD
010
010ZZZZZ
01000000
DDD
001
001ZZZZZ
00100000
AAA
SSS
SSSDDDDD
SSS10000
AAA
SSS
SSSDDDDD
SSS01000
DDDDD
00100
VVV
VVV
DDDDD
00010
DDDDD
00001
AAAAA
SSSSS
AAA
SSS
AAAAA
SSSSS
VVVVVVVV
VVVVVVVV
SSSAAAAA
SSSSSSSS
D-- 有待于对角化
A--将要改动
S--需要存贮
Z--将要变为 0
a)
b)
a)
b)
6.3.2
图 6.20 特殊矩阵结构 1
浙江大学研究生学位课程
《实用数值计算方法》 106
00000
00000
00000
00000
00000
00000
10000
10000
01000
01000
00100ZZ
0010000
00010ZZ
0001000
00001ZZ
0000100
SSSSSDD
SSSSS10
SSSSSDD
SSSSS01
VVVVVVV
VVVVVVV
SSSSSAA
SSSSSSS
a)
b)
包括四步运算
1. 使用前一步的结果,简化部分元素为零
2. 消去剩下子块正方结构为单位阵
3. 存储以后要使用的非零系数
4. 回代
6.3.2
图 6.22 特殊矩阵结构 2
浙江大学研究生学位课程
《实用数值计算方法》 107
6.3.3 样条函数在两点边值问题中的应用
考察 二阶线性微分方程 的边值问题 226
216
206
'
0'
00
'''
nnn rbyby
rayay
xryxqxyxpxy
可以证明:,个
约束条件:
时,当
上的:是定义在节点而,
来近似:用三次样条函数可以的解假定微分方程边值问题
的区间和节点为:设
2,1,0,,3,2,1)1(3
,,2,1
226206
1
1
23
10
jnin
xSxS
xxxni
dxcxbxaxSxS
xxS
baxxSxy
xS
xy
bxxxa
x
kj
ikj
i
ii
iiiii
k
n
1
0
3200 6
1
2
1 n
kkk xxhxxgxxfexS
bax ,
浙江大学研究生学位课程
《实用数值计算方法》 108
6.3.3
此时为,而边值条件
其中
则有,,并令代入微分方程把
易知:个待定常数。是而
,其中,
226216
,,
206,,
,2
1
3,,,,,,
,0
'''
1
0
''
1
0
20
'
110
iiiiii
i
n
kkk
n
kkk
n
k
kkk
xrrxqqxpp
xxxSxSxS
xxhgxS
xxhxxgfxS
nhhhgfe
xx
xxxxxx
236,,2,1,0,
6
1
2
1
1
0
3200
1
0
1
0
20
nir
xxhxxgxxfeq
xxhxxgfpxxhg
i
n
kkikiii
n
k
n
kkikiikik
246000 rfe
浙江大学研究生学位课程
《实用数值计算方法》 109
6.3.3
256
2
1
6
1
2
1
1
0
20
1
0
3200
n
n
kknknn
n
kknknnn
rxxhxxgf
xxhxxgxxfe
3
2
3
13
02
333
000
''
110
3
2
3
1
0246
001
00,1
110
13
2
3
1010
01
00
1,001
,,,,,,
33256246236
xhxhxhgxfxxS
e
r
r
rqp
y
y
xxyxy
xShhhgfe
nn
n
现设得由
,,,,,
有:
,,,,三等分。有节点:,把区间
问题例:给定微分方程边值
求得。的值,故未知数个个方程可解出共,,于是联立
浙江大学研究生学位课程
《实用数值计算方法》 110
6.3.3
1,0
3
2061224.0
3
1061224.0
061224.05.0540814.0~
~061224.0061224.0061224.0
0.05.0540814.0
12
2795755
27186611655
272758118911655
02727278
3
26
3
1662
3
23
3
1332
33
32
210
0
01
012
012
210''
2
2
2
12
0'
x
xx
xxxxy
xyxy
hhh
egf
g
fgh
fghh
fghhh
fghhh
xhxhxhgxS
xhxhxhgxfxS
可写为的近似解故
这组方程的解为
条件有代入原微分方程和边界
有
浙江大学研究生学位课程
《实用数值计算方法》 111
的实数均为大于
时的捕食系统考虑
系数为两种群间的交叉亲疏
为本种群的亲疏系数系数为两个种群的自然增长
模型例,生态系统的
0
,,,
0
,
,
,
2122
211211
21
12
21
00
2221102
1221101
xbxkx
bakkxaxkx
ba
ba
ba
ba
xxbxbbx
xxaxaax
Volterra
竞争系统,
捕食系统,共栖系统,
时,当
00)
00)
00)
0
12
12
12
12
baiii
baii
bai
ba
6.3.3
浙江大学研究生学位课程
《实用数值计算方法》 112
为实数,
函数:阶为第一类其中,
,,
精确解为
,积分区间
,,
例,求解初值问题
vkvk
xxxJ
BesselvvxJ
xJyxJy
xJyxJy
xx
xJxyxJxy
xJxyxJxy
yx
ydx
dy
yx
ydx
dy
yx
ydx
dy
ydx
dy
k
k
v
v
v
0
2
34123
12101
21
13141213
11121011
434
323
212
21
1!41
2
1
3,2,1,0
0.100.1,
3
2
1
6.3.3
浙江大学研究生学位课程
《实用数值计算方法》 113
相平面上的轨迹为
02
01 , xx
2x
1x
ak1
62k
因。而食用鱼反而减少的原期间捕鱼量减少,该模型解释了一次大战
周期解的平均值平衡点
a
k
b
k 12 ,
年度 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923
比例 11.9 21.4 22.1 21.2 36.4 27.3 16.0 15.9 14.8 10.7
1914 年 --1923 年捕获的鱼中,食用鱼所占的比例(%)
图 6.23 相平面上的轨迹图
6.3.3
浙江大学研究生学位课程
《实用数值计算方法》 114
为扩散系数
,,
统考虑密度分布的捕食系
少。食用鱼增加,食肉鱼减
此时,平衡点为
,则模型改为系数因此,我们可控制捕捞
21
212222
2
22
211121
2
11
2
1
12
2122
1211
,
,
DD
SbSSkx
SD
t
S
SaSSkx
SD
t
S
txS
txS
a
k
b
k
xbxkx
xaxkx
6.3.3
浙江大学研究生学位课程
《实用数值计算方法》 115
隐式。半隐式:可化为显式的
新节点值组才能解出隐式格式:应通过方程
节点值式可显式解出新显式格式:通过递推公
每一个初值即可计算自动起步:由
即可计算出单步法:仅由方法类型与特点:
.5
,,,,,
.4
,,,,,,
.3
,2,1
.2
.1
00111
0011
00
1
hyxyxFy
hxyxyxFy
iy
yxy
yy
iii
iiii
i
ii
公式简单,但精度不好
编程简单,使用方便
计算量少,但稳定性差
计算量大,但稳定性好
6.3.3总 结
浙江大学研究生学位课程
《实用数值计算方法》 116
.1,2
10
2
11
111
1,11
.4
1.0
10
.3
06
,,2,46
1
.2
002.0001.03.005.0
1001000
.1
2''
5
'111
21
21
2122
211211
,,,取节点为
值问题用样条函数方法求解边之值。项。并计算取至
初值问题:级数展开求解微分方程用,的绝对稳定区域为
算法为三阶的,并证明上式所定义的隐式单步公式
试证明由
,,,,
轨迹图,并讨论的相,作出
捕食系统方法求解初值问题用四阶
yy
xyxxy
yx
y
xyyxdx
dy
Taylor
yxhfyxfyxfhyy
bakk
xx
xbxkx
txtxxaxkx
KuttaRunge
nnnnnnnn
第六章 习题
浙江大学研究生学位课程
《实用数值计算方法》 117
)(
1
,,,,,
)2(
;//1
)(
)(
.5
211221
2
1122
2211222
1221111
ODEINT
KuttaRunge
aabakk
x
akak
xbxxakx
xxaaxkx
果。)而导致的结条件(以上结论,并解释由于方法验证用带精度控制的四阶
和初值。试选取适当的系数
,最后趋于灭绝。某一最大值后开始减少
开始时增大,直至达到食肉种群量则
。初始时刻食饵十分丰富)(
满足
捕食系统