一些思想介绍
假设你有一个简单的问题,如:
dv
v
dt
λ=,其中,
0
(0)vv= (1)
对于应用,你所感兴趣的是从0t =积分到
0
tt= v的特性,对于这个问题,结果是
众所周知的:
0
()
t
vt ve
λ
=
(2)
但是,对于我们所关心的大多数问题,其精确的结果是不知道的,对于这种
问题用数值方法去近似求解就显得比较重要了。我们将在本课中研究这些复杂的
问题,但通常,我们能够通过一些简单而又典型的问题(如(1))学到很多有关
数值方法的特性。
假设我们用一种简单的数值方法去解问题(1):
1nn
n
VV
V
t
λ
+
?
=
Δ
,其中:
0
0
(),
n
VVntVv= Δ= (3)
这种方法通常称为向前欧拉方法,它是基于下面的近似:
()(
n
nn
t
dV V t t V t
dt t
+Δ ?
≈
)
Δ
为了了解向前欧拉方法有多么的精确和有效,我们可以算一下误差大小。特别地,
我们定义:
()
nn
Vvt v≈≡
n
,0 tT≤ ≤
这样,作为一种合理的误差估计:
2
0
() ( )
T
ET V v dt=?
∫
其离散化问题为:
2
0
() ( )
N
nn
n
E TtVv
=
=Δ ?
∑ ,其中,TN t=Δ
对于一般问题,我们无法计算v(的精确解),因此,我们无法具体知道
的特性。但是,对于这个问题我们可以。让我们举一个特例子并画出结果。
()ET
例:
1λ =?
1000T =
0
1v =
()
t
vt e
?
?=
由向前欧拉方法可以得到:
让我们用分析的思路看一下向前欧拉方法:
1nn
n
VV
V
t
λ
+
?
=
Δ
?
1
(1 )
nn
Vtλ
+
=+ΔV
?
0
(1 )
nn
VV tλ=+Δ
对于这个例子:
(1 )
n
V=?Δ
n
t
(4)
而对其误差,我们有:
2
0
() [(1 ) ]
N
nnt
n
ET t t e
?Δ
=
=Δ ?Δ ?
∑
再简化一些,我们注意到:
1000T =
,
1000T
N
tt
==
Δ Δ
,
这里我们假设取值可以满足使得N取整数。 tΔ
?
1000
2
0
( ) (1000) [(1 ) ]
t
nnt
n
ET E t t e
Δ
?Δ
=
==Δ?Δ?
∑ (5)
注释:
* 如果足够大的话,实际上(当n增加时)是随时间增大的。特别, tΔ
n
V
如果 ,那么,2tΔ>
1nn
VV
+
>
这个问题一个有趣的方面是,如果我们让2tΔ =,则积分500步可以达到
t=T=1000,这样是合理的。但是,实际的问题是tλΔ,如果λ <0, 那么为了使
1n
VV
+
<
n
,我们要求2tλΔ<。
n
V随着增长这种特性被认为是数值方法的稳
定性。
n
* 如果,与2tΔ>
n
V增长紧密相关的,我们注意到当1tΔ >时,
n
V是震荡的,
这由(4)式可以得到:
1n
(1 ) (1 )
nn
Vt
+
=?Δ =?ΔtV
如果,则和的符号是相反的(即1tΔ>
1n
V
+
n
V
1
0
nn
VV
+
× <)。