当前位置:文档之家› 第1章2数值运算的误差估计及注意事项(精)

第1章2数值运算的误差估计及注意事项(精)

关于本身是病态的问题,我们暂时还是留给数学家去头痛 吧,当然,我们将会做一个数值实验来感受一下的!
例:计算
In
1 e
1 xne xdx ,
0
n 0,1, 2, ......
公式一: In 1 n In1
I0
1 e
1 e xdx
0
1
1 e
0.63212056
记为
I注0* 意此公式精确成
则初始误差 E0 I0 I0 0.5108
解:设截取 n 位有效数字后得 x* x,则
| r*( y) |
x * y( x*) y( x*)
|r
*(x) |
| r *(x) |
ln x *
估计 x 和 y 的相对误差上限满足近似关系
r *( x) ln x * r *( y)
1 10n1 ln x * 0.1% 2a1
n4
分析:ε*(y) = f (x*) f (x)
= f ’( )(x* x)
Mean Value ε *(x) = x* x
Theorem
x* 与 x 非常接近时,可认为 f ’( ) f ’(x*) ,则有:
| ε *(y)| | f ’(x*)|·| ε *(x)|
即:x*产生的误差经过 f 作用后被放大/缩小了| f ’(x*)| 倍。故称| f ’(x*)|为放大因子 / amplification factor / 或 绝对条件数 / absolute condition number /.
/ well-conditioned / \坏条件的 / ill-conditioned /。
注:关于多元函数 y f ( x1, x2, ..., xn ) 的讨论,请参阅教 材第4页。
例:计算 y = ln x。若 x 20,则取 x 的几位有效数字可保证 y 的相对误差 < 0.1% ?
0.63289600
?
I* 13
1 13
I* 12
7.2276480??
I* 14
1 14
I* 13
94.959424?
!
I 15
1 15
I 14
1423.3914
!
!
What happened
?!
考察第n步的误差 En
| En
| | In
I
* n
|
|
(1
nI
n1
)
(1
nI
* n1
)
| r*( y) |
*( y)
f ( x*)
| r*( x) |
*(x) x*
f ( x*) f ( x) x * x * x x * x f ( x*) x *
x * f ( x*) f ( x*)
r *(x)
相对误差条件数 f 的条件数在某一点是小\大,/ re则lat称ivefc在on该dit点ion是n好um条be件r/ 的
I
N
)
1 N
(1
I
* N
)
1 N
| EN
|
以此类推,对 n < N 有:
| En |
1 N (N 1) ... (n 1)
| EN
|
误差逐步递减, 这样的算法称为稳定的算法 / stable algorithm /
在我们今后的讨论中,误差将不可回避, 算法的稳定性会是一个非常重要的话题。
和、差、积、商的误差
注意在e此理( N公论1式上1)与等 公价I N式。一N
1
1
可取
I
* N
1 1
2
e(
N
1)
1 N 1
IN
当N 时, EN
IN
I
* N
0

I
* 15
1 2
e
1 16
1 16
0.042746233
I1*4
1 15
(1
I1*5 )
0.063816918
I1*3
1 14
(1
I1*4
)
0.066870220
数值运算的误差估计及注意事项
邹昌文
本讲重点
• 误差的传播与积累 • 数值运算的误差估计 • 误差定性分析 • 避免误差的危害
误差的传播与积累 / Spread & Accumulation /
例:蝴蝶效应 —— 纽约的一只蝴蝶翅膀一拍,风和日丽的北京 就刮起台风来了?!
NY
BJ
以上是一个病态问题 / ill-posed problem/
不知道怎么办啊?
例:计算
ln 20 8 9
ln20.89
,取 4
ln 20 8
位有效是x 可,19能.即#,是l取2n0(最.2#0,坏.8也9情),可况则能,相对误差
即a1 = 1。
9 2.0105 0.1%
ln 20 8
9
数值计算中பைடு நூலகம்注意的问题
• 避免相近两数相减 • 防止大数“吃掉“小数引起失真 • 避免大数除以小数 • 计算复杂性
I1*2
1 13
(1
I1*3
)
0.071779214
I1*1
1 12
(1
I1*2
)
0.077351732
I1*0
1 11
(1
I
* 11
)
0.083877115
I1*
1 2
(1
I
* 2
)
0.36787944
I
* 0
1 1
(1
I1*
)
0.63212056
考察反推一步的误差:
| EN 1 |
1 N
(1
( x1*
x
* 2
)
(
x1* )
(
x2* );
( x1* x2* )
x1* ( x2* )
x
* 2
(
x1*
);
( x1* / x2* )
x1* ( x2* )
x
* 2
(
x1*
)
x
* 2
2
(
x
* 2
0)
函数的误差估计 /Error Estimation for Functions/
问题:对于 y = f (x),若用 x* 取代 x,将对y 产生什么影响?

1
e
1 0
xn
e0
dx
In
1 e
1 xn e1 dx
0
1
1
e(n 1 ) In n 1
I* 1
1
1
I* 0
0.36787944
... ... ... ...
I* 10
1 10
I* 9
0.08812800
I* 11
1
11
I* 10
0.03059200
I* 12
1 12
I* 11
本章小结
误差在数值计算中是不可避免的,误差的传播和 积累直接影响到计算结果的精度。在研究算法的同 时,必须注重误差分析,使建立起来的算法科学有 效。
按照误差产生的来源可分为模型误差、观测误差 ,截断误差、和舍入误差等。
误差的表示法有绝对误差和相对误差两种。 在表示一个近似数时,要用到有效数字的概念,这在 数值计算中非常有用,有效数字是由绝对误差决定的 通常用函数的泰勒展开对误差进行估计
|
n
|En1|
n !| E0
|
可见初始的小扰动 | E0 | 0.5108 迅速积累,误差呈递增走势。
造成这种情况的是不稳定的算法 / unstable algorithm /
我们有责任改变。
公式二: In 1 n In1
1
I n1
(1 n
In )
方法:先估计一个IN ,再反推要求的In ( n << N )。
相关主题