文档介绍:该【第6章常微分方程数值解 】是由【1875892****】上传分享,文档一共【17】页,该文档可以免费在线阅读,需要了解更多关于【第6章常微分方程数值解 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。§1 欧拉方法 /* Euler’s Method */
欧拉公式:
x0
x1
向前差商近似导数
记为
定义
在假设 yi = y(xi),即第 i 步计算是精确的前提下,考虑的截断误差 Ri = y(xi+1) yi+1 称为局部截断误差 /* local truncation error */。
定义
若某算法的局部截断误差为O(hp+1),则称该算法有p 阶精度。
欧拉法的局部截断误差:
欧拉法具有 1 阶精度。
Ri 的主项
/* leading term */
亦称为欧拉折线法
/* Euler’s polygonal arc method*/
欧拉公式的改进:
隐式欧拉法 /* implicit Euler method */
向后差商近似导数
x0
x1
))
(
,
(
)
(
1
1
0
1
x
y
x
f
h
y
x
y
+
)
1
,
...
,
0
(
)
,
(
1
1
1
-
=
+
=
+
+
+
n
i
y
x
f
h
y
y
i
i
i
i
由于未知数 yi+1 同时出现在等式的两边,不能直接得到,故称为隐式 /* implicit */ 欧拉公式,而前者称为显式 /* explicit */ 欧拉公式。
一般先用显式计算一个初值,再迭代求解。
隐式欧拉法的局部截断误差:
即隐式欧拉公式具有 1 阶精度。
Hey! Isn’t the leading term of the local
truncation error of Euler’s method ?
Seems that we can make a good
use of it …
梯形公式 /* trapezoid formula */
— 显、隐式两种算法的平均
注:的确有局部截断误差 ,
即梯形公式具有2 阶精度,比欧拉方法有了进步。但注意到该公式是隐式公式,计算时不得不用到迭代法,其迭代收敛性与欧拉公式相似。
中点欧拉公式 /* midpoint formula */
中心差商近似导数
x0
x2
x1
假设 ,则可以导出
即中点公式具有 2 阶精度。
需要2个初值 y0和 y1来启动递推
过程,这样的算法称为双步法 /* double-step
method */,而前面的三种算法都是单步法
/* single-step method */。
方 法
显式欧拉
隐式欧拉
梯形公式
中点公式
简单
精度低
稳定性最好
精度低, 计算量大
精度提高
计算量大
精度提高, 显式
多一个初值,
可能影响精度
Can’t you give me a formula
with all the advantages yet without any
of the disadvantages?
Do you think it possible?
Well, call me greedy…
OK, let’s make it possible.
改进欧拉法 /* modified Euler’s method */
Step 1: 先用显式欧拉公式作预测,算出
)
,
(
1
i
i
i
i
y
x
f
h
y
y
+
=
+
Step 2: 再将 代入隐式梯形公式的右边作校正,得到
1
+
i
y
)]
,
(
)
,
(
[
2
1
1
1
+
+
+
+
+
=
i
i
i
i
i
i
y
x
f
y
x
f
h
y
y
注:此法亦称为预测-校正法 /* predictor-corrector method */。可以证明该算法具有 2 阶精度,同时可以看到它是个单步递推格式,比隐式公式的迭代求解过程简单。后面将看到,它的稳定性高于显式欧拉法。
§2 龙格 - 库塔法 /* Runge-Kutta Method */
建立高精度的单步递推格式。
单步递推法的基本思想是从 ( xi , yi ) 点出发,以某一斜率沿直线达到 ( xi+1 , yi+1 ) 点。欧拉法及其各种变形所能达到的最高精度为2阶。
考察改进的欧拉法,可以将其改写为:
斜率
一定取K1 K2
的平均值吗?
步长一定是一个h 吗?
首先希望能确定系数 1、2、p,使得到的算法格式有2阶精度,即在 的前提假设下,使得
Step 1: 将 K2 在 ( xi , yi ) 点作 Taylor 展开
将改进欧拉法推广为:
)
,
(
)
,
(
]
[
1
2
1
2
2
1
1
1
phK
y
ph
x
f
K
y
x
f
K
K
K
h
y
y
i
i
i
i
i
i
+
+
=
=
+
+
=
+
l
l
Step 2: 将 K2 代入第1式,得到
Step 3: 将 yi+1 与 y( xi+1 ) 在 xi 点的泰勒展开作比较
要求 ,则必须有:
这里有 个未知数, 个方程。
3
2
存在无穷多个解。所有满足上式的格式统称为2阶龙格 - 库塔格式。
注意到, 就是改进的欧拉法。
Q: 为获得更高的精度,应该如何进一步推广?
其中i ( i = 1, …, m ),i ( i = 2, …, m ) 和 ij ( i = 2, …, m; j = 1, …, i1 ) 均为待定系数,确定这些系数的步骤与前面相似。
)
...
,
(
...
...
)
,
(
)
,
(
)
,
(
]
...
[
1
1
2
2
1
1
2
32
1
31
3
3
1
21
2
2
1
2
2
1
1
1
-
-
+
+
+
+
+
+
=
+
+
+
=
+
+
=
=
+
+
+
+
=
m
m m
m
m
m
i
m
i
i
i
i
i
i
m
m
i
i
hK
hK
hK
y
h
x
f
K
hK
hK
y
h
x
f
K
hK
y
h
x
f
K
y
x
f
K
K
K
K
h
y
y
b
b
b
a
b
b
a
b
a
l
l
l
最常用为四级4阶经典龙格-库塔法 /* Classical Runge-Kutta Method */ :
注:
龙格-库塔法的主要运算在于计算 Ki 的值,即计算 f 的值。Butcher 于1965年给出了计算量与可达到的最高精度阶数的关系:
7
5
3
可达到的最高精度
6
4
2
每步须算Ki 的个数
由于龙格-库塔法的导出基于泰勒展开,故精度主要受解函数的光滑性影响。对于光滑性不太好的解,最好采用低阶算法而将步长h 取小。