浙江大学研究生学位课程
《实用数值计算方法,1
第一章 基本知识
1.1 计算机中的数
1.2 误差分析
1.3 数值计算中出现的问题
1.4 求解题目本身的特性
1.5 典型示例分析浙江大学研究生学位课程
《实用数值计算方法,2
1,计算机中数的表示的近似性
2,误差的来源和传播
3,数值方法的稳定性,计算步骤的合理性
4,题目本身数学模型的特性
5,应注意的要点浙江大学研究生学位课程
《实用数值计算方法,3
1.1 计算机中的数整数 Integer 离散 无限实数 Real Number 连续 无限有理数 Rational Number 稠密 无限复数 Complex Number 连续 无限浮点数 Floating Point Number
1.1.1 浮点数集 F 离散 无限数基 Number Base
精度 Precision t
阶域 Exponential Range 上界 U
下界 L
e
t
t
e
ddd
xF




)(
2
21
浙江大学研究生学位课程
《实用数值计算方法,4
x的尾数 mantisa
分式 fraction
di 尾数数字 digit figure (整数 )
e x的阶数 exponent,或 characteristic
往往规格化浮点数系 Fn
Normalized Floating Point Number System
d1?0
t位有效数的 相对精度
Minimum Relative Accuracy
tid i,,2,1,10
UeL
1

UL
UL
61
3
765432
11
10,3,7,10
10)
10
2
10
3
10
4
10
5
10
6
10
7
10
8
(5 4 3 2.876
)
1
()
1
(





t
t
t
t
et


1.1.1
浙江大学研究生学位课程
《实用数值计算方法,5
Fn 中的浮点数的总数
0
从 L到 U的阶次个数从 2到 t,共 t-1位的 di有?种选择第 1位的 d1可以有 (?-1)种选择正数和负数有相同个数示例,
1)1()1(2 1 LUN t
331)112(2)12(2
2,1,3,2
13

N
ULt?
即相对误差界 Relative Error Bound
1.1.1
浙江大学研究生学位课程
《实用数值计算方法,6
1.1.1 示例浮点数集序数 1 2 3 4 6 8 12 17 22 26 28 30 31 32 33
数值 -3 -2 -1 0 1 2 3
位置
e
t
tdddx


2
21
(1/
2+
0/4
+0
/8)
2
2=3
2/1
6
(1/
2+
1/4
+1
/8)
2
2=5
6/1
6
(1/
2+
0/4
+1
/8)
2
2=4
0/1
6
(1/
2+
1/4
+0
/8)
2
2=4
8/1
6(1/2
+1
/4+
1/8
)?2
1=2
8/1
6
(1/
2+
1/4
+0
/8)
2
1=2
4/1
6
(1/
2+
0/4
+1
/8)
2
1=2
0/1
6
(1/
2+
0/4
+0
/8)
2
1=1
6/1
6
(1/
2+
1/4
+1
/8)
2
0=1
4/1
6
(1/
2+
1/4
+0
/8)
2
0=1
2/1
6
(1/
2+
0/4
+1
/8)
2
0=1
0/1
6
(1/
2+
0/4
+0
/8)
2
0=8
/16
(1/
2+
1/4
+1
/8)
2
-1=
7/1
6
(1/
2+
1/4
+0
/8)
2
0=1
2/1
6
(1/
2+
0/4
+1
/8)
2
-1=
5/1
6
(1/
2+
0/4
+0
/8)
2
-1=
4/1
6
浙江大学研究生学位课程
《实用数值计算方法,7
1.1.2 浮点数表示实数的问题
(1) 最接近实数 Z的浮点数两浮点数间的绝对值差相对差浮点数 x=fl(Z) 和 实数 Z 的最大相对误差即相对误差界 Relative Error Bound
用任何?=2k作数基表示 (0.1)10均需无穷位
(0.1)10=(0.000110011001100…..,)2
=(0.012121212121212…...) 4
=(0.0631463146314……) 6
=(0.1999999999999…...) 16
因此 10?fl(0.1)?1.0
(2) F 中绝对值最大的数
t
Z
ZZfl 1
2
1)(?
)1(1)( )()( teet
et )(
U
t
U
t




11111
2?
浙江大学研究生学位课程
《实用数值计算方法,8
它近似表示的 Z的最大绝对值对前例对于则产生上溢错误 Overflow
(3) F 中绝对值最小的非零 Z
它近似表示的非零最小绝对值对前例
MXxx
MX
MX
U
t




2
8
2
5
2
3
4
15
2
22
1
1
2
1
1
21
2
3
11

LL
1
2
1 LMN?
8
12
2
1 11MN
1.1.2
浙江大学研究生学位课程
《实用数值计算方法,9
对于则机器将给出结果为 0
或产生下溢错误 Underflow
(4) 对 Z成立的运算律,对 F不一定成立设则然而所以
MNxx 16116616721
166,167,165 CBA
CBACBA
16
6
16
6
16
12)()]()([
16
50
16
5)]()([)(


CflBflAfl
CflBflAfl
)()]()([)]()([)( CflBflAflCflBflAfl
1.1.2
浙江大学研究生学位课程
《实用数值计算方法,10
1.1.3 机器最小数 Machine Epsilon
能使 1.0? eps > 1.0
的最小浮点数 eps
可以用来表示该机器浮点运算的准确程度自动找出该计算机 eps 值的程序
EPS = 1.0
10 EPS = 0.5? EPS
EPSI = EPS + 1.0
IF(EPSI.GT.1.) GOTO 10
EPS = 1.4? EPS
浙江大学研究生学位课程
《实用数值计算方法,11
1.2 误差分析
1.2.1 误差的来源现实世界研究对象测量数据数学模型的建立计算方法的构成数值运算的执行测量误差模型误差方法误差舍入误差结果浙江大学研究生学位课程
《实用数值计算方法,12
1.2.2 术语和定义
(1) 绝对误差 Absolute Error,或误差 Error
E(X) = X? XA
误差 近似值 准确值
(2) 绝对误差界 Absolute Error Bound,或误差界 Error Bound
或近似地习惯表示为
(3) 相对误差 Relative Error
AXXX
XXXXX A
XXX A


X
XE
X
XX
X
XX
X
XE
Xe
A
A
A
A

浙江大学研究生学位课程
《实用数值计算方法,13
(4) 相对误差界 Relative Error Bound
(5) 有效位数 Significant Digit
n位有效数字 Xn
计算机中得到数字的两类方法舍入 rounding
截断 chopping
由准确值经舍入得到的 xn的误差界为第 n位的半个单位例如对 10进制数,
误差界为,
XXX XX
A

n
n
n
ddd
dddd
ddd
21
321
21
000.0
.
000.000
mnnn aaaX 10101010 22110
2
10
10
110
2
1)( nm
n
m
nnA XXX

1.2.2
浙江大学研究生学位课程
《实用数值计算方法,14
取 3位有效数,n=3,m=1
取 5位有效数,n=5,m=1
8 9 7 9 31 4 1 5 9 2 6 5 3 5.3
233
3
10
1
2
1)(
14.3

XX
X

455
5
10
1
2
1)(
1 4 1 6.3

XX
X

1.2.2
浙江大学研究生学位课程
《实用数值计算方法,15
1.2.3 误差的传播 Propagation of Error
舍入误差对差分的影响
xydxdy
i x
i
y
i
=
y
i
3
/ 1 0
△ y
i
y
i
-y
i -1

2
y
i
△ y
i
- △ y
i -1

3
y
i

2
y
i
- △
2
y
i -1

4
y
i

3
y
i
- △
3
y
i -1
0 10
1 11
2 12
3 13
4 14
5 15
6 16
7 17
8 18
1 0 0,0
1 3 3,1
1 7 2,8
2 1 9,7
2 7 4,4
3 3 7,5
4 0 9,6
4 9 1,3
5 8 3,2
3 3,1
3 9,7
4 6,9
5 4,7
6 3,1
7 2,1
8 1,7
9 1,9
6,6
7,2
7,8
8,4
9,0
9,6
1 0,2
0,6
0,6
0,6
0,6
0,6
0,6
0,0
0,0
0,0
0,0
0,0
0 10
1 11
2 12
3 13
4 14
5 15
6 16
7 17
100
133
173
220
274
338
410
491
33
40
47
54
64
72
81
7
7
7
10
8
9
0
0
3
-2
1
0
3
-5
3
浙江大学研究生学位课程
《实用数值计算方法,16
数据误差在差分运算中的传播
i
x
i
y
i
=x
i
3
△ y
i

2
y
i

3
y
i

4
y
i
1
2
3
4
5
6
7
8
0
1
2
3
4
5
6
7
0
1
8
27
64
125
216
343
1
7
19
37
61
91
127
6
12
18
24
30
36
6
6
6
6
6
0
0
0
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
0
1
8
27
65 ( + 1 )
125
216
343
512
1
7
19
38 ( + 1 )
60 ( - 1 )
91
127
169
6
12
19 ( + 1 )
22 ( - 2 )
31 ( + 1 )
36
42
6
7 ( + 1 )
3 ( - 3 )
9 ( + 3 )
5 ( - 1 )
6
1 ( + 1 )
-4 ( - 4 )
6 ( + 6 )
-4 ( - 4 )
1 ( + 1 )
1.2.3
浙江大学研究生学位课程
《实用数值计算方法,17
1.2.4 条件数 Condition Number
为了定量分析误差的传播,要弄清对于在 x=a附近作 Taylor展开 ( x=a为准确值)
)(
)(
)(

xe
yeC
xfy
)(
)(
)(
)(
)(
)(
)(
)(
)()(
)(
)()(,
)(
)(
)(
)()(
)(
)(
)(
)()()()()()()(
!2
)(
)()()()()(
'
''
'
''
'''
af
afa
xe
ye
C
xe
af
afa
af
afxea
ye
xeaxE
a
xE
xe
af
afxE
af
yE
ye
afxEaxafafxfyE
ax
afaxafafxf
a






又故任何三种情况,都能使条件数很大。
( 1) a 很大 (相对于 f(a)和 f '(a))
( 2) f '(a)很大 (相对于 a和 f(a))
( 3) f(a)很小 ( 相对于 f '(a)和 a)
xeCye
浙江大学研究生学位课程
《实用数值计算方法,18
推广到多元的情况,对在 附近作 Taylor展开 ( xi=ai为准确值)
),,,( 21 nxxxfy
),,,( 21 naaa?
),,,( 21 nxxxf?



)](),,,(
)(),,,([
),,,(
21
1121
21
1
nnnx
nx
n
axaaaf
axaaaf
aaaf
n
其中
nx x
ff
n?


,
),,,(
),,,()(
),,,(
),,,()(
),,,(
)(
)(
),,,()(
)(),,,()(),,,(
),,,(),,,()(
21
21
21
21
21
1
21
211121
2121
1
n
nxii
n
nxi
n
n
i
nxi
nnnxnx
nn
aaaf
aaafxea
aaaf
aaafxE
aaaf
yE
ye
aaafxE
axaaafaxaaaf
aaafxxxfyE
i
i
i
n








其中
iii axExe /)()(?
偏条件数:

i iin
nxi
i
x
i xeCyeaaaf
aaafa
xe
yeC ii )()(;
),,,(
),,,(
)(
)(
21
21
1.2.4
浙江大学研究生学位课程
《实用数值计算方法,19
对于误差界







i
inx
iiii
n
i
inx
i
ii
n
i
i
nxi
i
inx
xaaafy
xEaxx
yEaaafyy
xEaaafyE
xC
aaaf
xaaafa
y
xaaafy
i
i
i
i
)(),,,()(
)()(
)(),,,()(
)(),,,()(
)(
),,,(
)(),,,(
)(
)(),,,()(
21
21
21
21
21
21


1.2.4
浙江大学研究生学位课程
《实用数值计算方法,20
1.2.5 代数运算的条件数将以上方法用于考察基本代数运算
( 1)加减法对于对于加法对于减法当 时;,坏条件
( 2)乘除法对于
)()(
)()()(
)()()(
2211
2
21
1
1
21
1
21
21
xeCxeC
xe
xx
x
xe
xx
x
ye
xExEyE
xxy




0.1,0.1
21
1
2
21
1
1 xx
xC
xx
xC
好条件
21
1
1 xx
xC
21
2
2 xx
xC

21 xx? 0.1,21CC
)()()( 2112
21
xEaxEayE
xxy


浙江大学研究生学位课程
《实用数值计算方法,21
1.2.5
nC
xenxe
a
aan
ye
xEanyE
xy
CC
xexeye
a
xEaxEa
xE
a
a
a
xE
yE
xxy
CC
xexe
xe
aa
aa
xe
aa
aa
ye
n
n
n
n










)()()(
)()()(
0.1,0.1
)()()(
)()(
)(
)(
)(
0.1
)()(
)()()(
1
1
21
21
2
2
2112
22
2
1
2
1
21
21
21
2
21
12
1
21
12
不是坏条件不是坏条件对于
( 3)乘冥对于
n < 1 时好条件
n >> 1 时坏条件浙江大学研究生学位课程
《实用数值计算方法,22
1.3 数值计算中的问题
1.3.1 数值相近两数相减的结果内接多边形边数不断增加将趋近于圆周用此方法计算圆周率,
对于 的圆,内接正六边形每边长为 1.0
不断将边数加倍,
周边总长的一半将逐渐趋近于 值?
0.1 OAr
O
B
D
C
A
n?
21 nn
nS
1?nS
浙江大学研究生学位课程
《实用数值计算方法,23
1.3.1
圆内接多边形的边数增加一倍后,新边长 Sn+1与原边长
Sn间的关系,见前 图,有:

2
1
222
222222
222
2
2222
1
42
,,0.1
*42
2
2
nn
n
n
SS
ABSrOA
ABOAOAOA
ADOAADOAOCOCAD
ODODOCOCAD
ODOCADDCADAC
ACS






因为 所以:
但用此公式无论以单精度或倍精度,都得不到正确结果,见表 1-6 递推运算 Recursive Operation 所得的结果原因( 1)
的条件数很大舍入误差造成的影响很大
( 2)计算出来的 还要乘 倍误差又进一步放大
0.24lim 20 nS S
n
242 nS
1?nS 21?nN
浙江大学研究生学位课程
《实用数值计算方法,24
1.3.1
表 1-6 由内接多边形递推计算圆周率递推计算得到的圆周率近似值递推运算序数
n
圆内接多边形的边数
N
n
单精度 倍精度 改进公式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
6
12
24
48
96
192
384
768
1536
3072
6144
1 2 2 8 8
2 4 5 7 6
4 9 1 5 2
9 8 3 0 4
1 9 6 6 0 8
3 9 3 2 1 6
7 8 6 4 3 2
3,0 0 0 0 0 0 0
3,1 0 5 8 2 8 2
3,1 3 2 6 2 7 9
3,1 3 9 3 5 6 6
3,1 4 1 0 3 7 9
3,1 4 1 5 6 8 1
3,1 4 1 7 7 2 7
3,1 4 3 1 1 6 4
3,1 4 8 8 3 5 1
3,1 8 2 6 7 1 0
3,1 8 4 7 4 1 5
3,6 8 3 7 9 0 6
4,2 4 2 6 4 0 5
8,4 8 5 2 8 1 0
1 6,9 7 0 5 6 2 0
3 3,9 4 1 1 2 4 0
6 7,8 2 2 4 8 1
1 3 5,7 6 4 4 9 6 2
3,0 0 0 0 0 0 0
3,1 0 5 8 2 8 2
3,1 3 2 6 2 8 2
3,1 3 9 3 5 0 1
3,1 4 1 0 3 1 4
3,1 4 1 4 5 2 9
3,1 4 1 5 5 4 0
3,1 4 1 5 8 6 8
3,1 4 1 4 9 9 4
3,1 4 1 6 7 4 2
3,1 4 0 2 7 5 1
3,1 3 7 4 7 5 1
3,1 3 7 4 7 5 1
3,1 8 1 9 8 0 5
3,0 0 0 0 0 0 0
4,2 4 2 6 4 0 6
0,0 0 0 0 0 0 0
0,0 0 0 0 0 0 0
3,0 0 0 0 0 0 0
3,1 0 5 8 2 8 5
3,1 3 2 6 2 8 6
3,1 3 9 3 5 0 2
3,1 4 1 0 3 4 0
3,1 4 1 4 5 4 6
3,1 4 1 5 5 9 1
3,1 4 1 5 8 6 0
3,1 4 1 5 9 2 1
3,1 4 1 5 9 2 6
3,1 4 1 5 9 2 7
3,1 4 1 5 9 2 7
= 3.14159 26535 89793 23846 26433 83279
50288 41971 69399 37510 …..,
浙江大学研究生学位课程
《实用数值计算方法,25
1.3.1
现若将递推算式作以下改进避免了相近两数的相减,
经 11次递推运算,收敛于 7位有效数近似值。
从以上示例可以看出:
( 1)解析法理论上准确的算式,不一定适用于数值计算。
尤其对递推运算 ;
( 2)递推计算开始阶段显示出正确趋势,并不意味继续执行能收敛到正确结果 ;
( 3)对算式作合适的改变能大大改变递推运算的结果。
因为运算的条件数有根本性的变化 ;

2
2
2
2
2
22
1
42
42
42
42
42
n
n
n
n
n
nn
S
S
S
S
S
SS





浙江大学研究生学位课程
《实用数值计算方法,26
1.3.2 正负交替级数累和计算中的问题指数函数可展开为无穷项收敛级数
Convergent Infinite Series
试用 的浮点数系由以上级数计算 之值。见表 1.7
可见运算到第 27项时对累和的第 5位有效数字不再有影响停止继续计算,得到:
然而实际上准确值是:
连第一位数都是错的!!
原因是:第 3 ~10项,数量级 101,误差界为 0.5?10-3。
故这些项加减运算结果 10-3位上不准,现 26项加和为 10-3
数量级,故第一位也不准
!!3!21)e x p (
32
n
xxxxx n
5,10 t?
)5.5e xp(?
3100902.3)5.5e x p (
31008677.4)5.5e x p (
325
2
10
2
11010
2
1
1015125.0125.15


误差界:
浙江大学研究生学位课程
《实用数值计算方法,27
1.3.2
表 1.7 级数各项数值及累加和项序数 单项值 各项累和值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1,0 0 0 0
- 5,5 0 0
1 5,1 2 5
- 2 7,7 3 0
3 8,1 2 9
- 4 1,9 4 2
3 8,4 4 6
- 3 0,2 0 8
2 0,7 6 8
- 1 2,6 9 2
6,9 8 0 3
- 3,4 9 0 2
1,5 9 9 7
- 0,6 7 6 8 0
0,2 6 5 8 9
- 0,0 9 7 4 9 3
0,0 3 3 5 1 3
- 0,0 1 0 2 4 0
0,0 0 3 1 2 8 9
- 0,0 0 0 9 0 5 7 3
0,0 0 0 2 4 9 0 8
- 0,0 0 0 0 6 5 3 2 3
0,0 0 0 0 1 6 3 0 9
- 0,0 0 0 0 0 3 9 0 0 0
0,0 0 0 0 0 0 8 9 3 7 5
- 0,0 0 0 0 0 0 1 9 6 6 3
0,0 0 0 0 0 0 0 4 1 5 9 4
1,0 0 0 0
- 4,5 0 0 0
1 0,6 2 5
- 1 7,1 0 5
2 1,0 2 4
- 2 0,9 1 8
1 7,5 2 8
- 1 2,6 8 0
8,0 8 8 0
- 4,6 0 4 0
2,3 7 6 3
- 1,1 1 3 9
0,4 8 5 8 0
- 0,1 9 1 1 0
0,0 7 4 8 9 0
- 0,0 2 2 6 0 3
0,0 1 0 9 1 0
0,0 0 6 7 0 0 0
0,0 0 0 3 7 9 8 9
0,0 0 0 2 8 9 3 2
0,0 0 0 3 1 4 2 3
0,0 0 0 3 0 7 7 1
0,0 0 0 3 0 9 3 4
0,0 0 0 3 0 8 9 5
0,0 0 0 3 0 9 0 4
0,0 0 0 3 0 9 0 2
0,0 0 0 3 0 9 0 2
浙江大学研究生学位课程
《实用数值计算方法,28
若更换一种算法,仍用 浮点数系按照结果准确到第四位有效数字。
从以上示例可以看出:
( 1)对正负项交替级数的累和问题需要特别注意。
若某些项的数量级远大于结果数量级,则可能隐含着数值相近两数求差运算;
( 2)由递推步骤得到收敛的计算结果还不能认为该结果是准确可靠的。
5,10 t?
3
100865.4
125.155.51
1
)5.5e x p (
1
)5.5e x p (



1.3.2
浙江大学研究生学位课程
《实用数值计算方法,29
1.3.3 运算次序对结果的影响用 的浮点数集,
以不同顺序作以下计算:
得到的结果相差很大,原因是:
( 1)在很大的数上,加以很小的数,由于有效位数的限制,可能等于没有加上这个数。
故 SB的值很小。
( 2)将很多较小的数加和而成较大的数后,
再加之较大的数,仍有作用。
故 SA的值比较准确。
9,10 t?
0897874.12
10
1
99999
1
99998
1
3
1
2
1
1
0901128.13
1
2
1
3
1
99998
1
99999
1
10
1
5
5


B
A
S
S
浙江大学研究生学位课程
《实用数值计算方法,30
1.3.4 减少运算次数求解一个给定问题,减少运算次数节省机器时间 减少舍入误差传播放大示例 求多项式的值上式顺序计算时 乘法次数为加法次数为改为下列计算顺序则有 乘法次数为 n
加法次数为 n
nnnnn xaxaxaxaaxP 112210

n
nn 21









100
211
1
11
SxaS
SxaS
SxaS
SxaS
aS
kkk
nnn
nn
0SxPn?
浙江大学研究生学位课程
《实用数值计算方法,31
1.3.5 算法的稳定性问题 Stability
如果初始数据的误差,以及计算过程中的舍入误差在该算法所包含的一系列相继运算中会不断放大,
这是数值不稳定的算法 Unstable Algorithm
例如,计算积分值用分部积分法既然 时时所以而且
,2,1,)1e x p (10 ndxxxA nn



1
0
11
0
1
0
)1e x p()1e x p(
)1e x p(
dxxxnxx
dxxx
nn
n
1
0
x
x
1)1e x p (
0)1e x p (


xx
xx
n
n
,3,2,1 1 nAnA nn


e
e
xd
dxxxA
1
11
1e x p1
)1e x p (1
1
1
0
1
0
0
1



浙江大学研究生学位课程
《实用数值计算方法,32
1.3.5
用 的浮点数系,经 A1出发递推计算得到:
6,10 t?

1)1e x p(
1011872 0.0
11016 0.0
12712 0.0
14548 0.0
17090 4.0
20727 4.0
26424 2.0
36787 9.0
9
8
7
6
5
4
3
2
1

xx
xA
A
A
A
A
A
A
A
区间,在分析:算式系解析方程导出计算过程中未见有相近大数相减剩下的可能性是从初始值起的舍入误差
A1的舍入误差是进一步估计
)(1021104 1 2.4 1671 AAE

11
1122
221
21
AEA
AEAAEA


0 6 8 4 8 0.09A
浙江大学研究生学位课程
《实用数值计算方法,33
1.3.5
所以依次类推得到:
由此可以估计得:
对前面计算结果作校正由于误差在计算过程中放大很严重,所以这是一种数值不稳定的算法。
下面寻找一种 数值稳定 的相反的算法,把乘法改为除法。
用相反的递推关系这样误差的传播情况成为:

)(2)( 12 AEAE

)(1
)(1)(
11
11




nn
nnnn
AEnAn
AEAnAEA

11
1
!1 AEn
AEnAE
n
nn


1 6 0 1.010412.4!91 789AE
0 9 1 6.01 6 0 1.00 6 8 4 8.099 AEA
2,3,,11 nn AA nn
n AEAAEA nnnn 111
n AEAE nn 1
浙江大学研究生学位课程
《实用数值计算方法,34
1.3.5
依次类推可见从 n 很大的 An 值开始,反过来算,误差将不断减小。
但首先要设法估计 An 的一个值。
根据可见取递推计算
!1 11 nAEAE nn
1111e x p 1
0
11
0
1
0



nn
xdxxdxxxA nnn
n
011limlim nA nnn
0 4 7 6 1 9 0 4 7.0120 1,0 2020 AEA
0838771.0
0773523.0
0717733.0
0669477.0
0627322.0
0590176.0
0557190.0
0527778.0
0500000.0
0500000.0
10
11
12
13
14
15
16
17
18
19
A
A
A
A
A
A
A
A
A
A










14
10
13
11
12
12
10
13
9
14
8
15
7
16
6
17
4
18
3
19
10102 62 88.7
10812 89 17.7
10375 47 00.9
10218 81 11.1
10706 33 55.1
10559 50 33.2
10095 20 53.4
10961 84 90.6
10253 13 28.1
10380 95 23.2










AE
AE
AE
AE
AE
AE
AE
AE
AE
AE
0916123.09?A 159 101026288.7AE
浙江大学研究生学位课程
《实用数值计算方法,35
1.4 题目本身的特性数值计算特性稳定性 Stability
在运算过程中舍入误差的影响是否会被很大地扩大条件 Condition,条件数 Condition Number
自变量的变差引起应变量很大变化的运算是坏条件的,条件数很大,因而也是不稳定的敏感度 Sensitivity
输入数据的变化造成输出结果的变化程度敏感度高的问题条件数大收敛阶 Order of Convergence
迭代计算中每步运算误差减少速率与运算参数(步长、项数、点数)的关系稳定性 条件数 敏感度 收敛阶
1,3 1,2 1,5
计算方法题目本身
1,4
浙江大学研究生学位课程
《实用数值计算方法,36
1.4.1 多项式系数对根的灵敏度对二次方程




qe
qp
qpp
pe
qp
p
xe
qpp
qpp
qppq
qppqpp
qppq
qpp
qq
qe
qp
q
pe
qp
p
xe
qp
q
qpqp
p
p
qe
q
pe
p
xe
qppqpx
qxpx
q
p
qp















2
2
2
2
22
2
22
2
2
22
2
22
2
2
2
2
2
1
1
)()()(
),(
02

其中所以又由得到在重根附近,,对 x的计算是坏条件的qp?2
浙江大学研究生学位课程
《实用数值计算方法,37
1.4.1
Wilkinson 示例若将 的系数改为,得用 的浮点数系求解,得到的根为

20,19,3,2,1
210
201921
1920
20


x
xx
xxxxx?
其根为
19x 232210
02 192320 xx?
90,2 t?
846908101.20
917250249.8
007267603.8
999697234.6
000006944.6
999999928.4
000000000.4
000000000.3
000000000.2
000000000.1
i
i
i
i
i
94 03 3 03 4 7.150 24 3 94 0 0.19
81 26 2 48 9 4.273 07 3 74 6 6.16
51 88 3 00 7 0.299 23 5 81 3 7.13
65 23 2 97 2 8.179 36 3 38 8 1.11
64 35 0 09 0 4.009 52 6 61 4 5.10
使 20个根中的 10个成了复数,最大移开实轴达 2.81。
这是由于题目本身的特性,系数对根的敏感度造成。
将方程写成弄清 的变化将引起 x的变化多大?
0),( 1920xxxP
浙江大学研究生学位课程
《实用数值计算方法,38
1.4.1



20
1
20
1
19
i
ij
j
jx
x
x
P
P
d
dx?
在每一个根值位置上,应有 20,,2,1, ixx
i


20,,2,1,20
1
19



i
ji
i
d
dx
ij
j
ix?
由此可求出 对每个根 的影响如下:?
ix

x = i
1
2
3
4
5
6
7
8
9
10
-8,2 * 1 0
- 18
8,2 * 1 0
- 1 1
-1,6 * 1 0
-6
2,2 * 1 0
-3
-6,1 * 1 0
-1
5,8 * 1 0
1
-2,5 * 1 0
3
6,0 * 1 0
4
-8,3 * 1 0
5
7,6 * 1 0
6

x = i
11
12
13
14
15
16
17
18
19
12
-4,6 * 1 0
7
2,0 * 1 0
8
-6,1 * 1 0
8
1,3 * 1 0
9
-2,1 * 1 0
9
2,4 * 1 0
9
-1,9 * 1 0
9
1,0 * 1 0
9
-3,1 * 1 0
8
4,3 * 1 0
7
ixd
dx
ixd
dx

浙江大学研究生学位课程
《实用数值计算方法,39
1.4.2 线性代数方程组系数对根的敏感度设二元线性代数方程组:
73
1999.2{


yx
yx
得到的解将系数作微小更动为:
1 7 9 9 3,6 0 0 0 yx
73
10 0 1.3{


yx
yx得到的解若将系数改为:
1 8 0 0 7,6 0 0 0 yx
73
13{


yx
yx
则得不到解 y
x
o
浙江大学研究生学位课程
《实用数值计算方法,40
1.5 典型示例分析
1.5.1 差分算法的收敛阶对函数,在 处用差分算法计算
2sin xxf? 5.0?x
dxxdf
14121086420 1010101010101010
h1
010
210?
410?
610?
810?
1010?


15 d e c i m a l d i g i t s
accuracy is used
in t h e co mp ut at io n
Ab
so
lut
e E
rro
r
浙江大学研究生学位课程
《实用数值计算方法,41
1.5.1
用两种不同的差分格式近似求导
( A)
( B)
h xfhxfdx xdf
h hxfhxfdx xdf 2
由前图可见对格式 A,误差随着步长减小而按比例减小这种格式收敛阶为 1,或线性收敛
=O( 1/h)
对格式 B,收敛阶为 2
=O( 1/h2)
两种格式,当 h小到一定程度后,受舍入误差影响,
开始发散,阶数为 -1
=O( h)
格式 B不需要用太小的步长,即可达到较高的精度,
但受舍入误差影响的程度则差不多。
浙江大学研究生学位课程
《实用数值计算方法,42
1.5.2 圆周率算法的收敛阶考察几种不同的圆周率算法
( a)无穷级数法 Infinite Series
( b)梯形面积法 Trapezoidal Rule
在 r=1.0 的 1/4 圆内不断增加梯形分割数,
总面积趋于
( c) 三角形面积法 Archimedes’ Method
不断增加圆内接三角形数
4,8,16,?,2p,?
每一个三角形面积为,根据以及由 开始
( d) Taylor 级数
9171513114?
4?
2sin?
2c o s121s in
2s in1c o s
2
1
4c o s4s in












98642
5.07531
7642
5.0531
542
5.031
32
5.0
2
1
6
62
1
a r c s in
8
642
,所以
4 8
16

浙江大学研究生学位课程
《实用数值计算方法,43
1.5.2
四种不同算法运行得到收敛阶见下图。
( A) ( B) 的收敛速度太慢
( C) 的收敛速度快,但受到舍入误差影响大
( D) 收敛速度快,受舍入误差影响小,是好的算法 。
543210 101010101010
110?
310?
510?
710?
910?
1110?
1310?
Computations made with
14.5 decimal digit arithmetic
by CDC 6500

Number of Terms,
Erro
r

6
1
1
5.0sin
'
kO
for
series
sTayler
76 kkOMethod
Archimedes
5.11kO
rule
lTrapozoidakO
Series
Infinite
1
A
B
C
D
k
浙江大学研究生学位课程
《实用数值计算方法,44
1.5.3 一元二次方程的根对于 坏条件根为:
02 qxpx
qpp
q
qpp
qppqpp
qpp
x
qpp
q
qpp
qppqpp
qpp
x
4
2
4
4
2
4
2
4
4
2
4
4
2
4
2
4
2
2
22
2
2
2
2
22
2
1










0qp
0qp
0qp
0qp
可以将以上四式统一表示为以下二式其中 p>0 时 SIGN(P)=+1
p<0 时 SIGN(P)=― 1 以上方法适用于 p2>4q

qppS IG Np
q
x
qppS IG Np
x
4
2
2
4
22
2
1



浙江大学研究生学位课程
《实用数值计算方法,45
1.5.3
示例误差计算,对 的根 x1
不合适的算式计算结果
b x 准确值相对误差
e (x ) %
5,2 1 2 3
1 1,1 1 1
1 2,1 2 3
5 2,1 2 3
1 2 1,2 3
5 2 1,2 3
1 2 1 2,3
4,3 7 8 1
1 0,7 4 5
1 1,7 8 9
5 2,0 4 6
1 2 1,2 0
5 2 1,2 2
1 2 1 2,3
- 0,4 1 7 1
- 0,1 8 3 0
- 0,1 6 7 0
- 0,0 3 8 5
- 0,0 1 5 0
- 0,0 0 5 0
- 0,0 0 0 0
- 0,4 1 7 0 8
- 0,1 8 3 0 2
- 0,1 6 7 2 8
- 0,0 3 8 3 9 9
- 0,0 1 6 5 0 0
- 0,0 0 3 8 3 7 1
- 0,0 0 1 6 4 9 8
0,0 0 4
0,0 1 0
0,1 6
2,9
9,1
3 0,3
1 0 0,0
b x 准确值相对误差
e (x ) %
5,2 1 2 3
1 1,1 1 1
1 2,1 2 3
5 2,1 2 3
1 2 1,2 3
5 2 1,2 3
1 2 1 2,3
4,3 7 8 1
1 0,7 4 5
1 1,7 8 9
5 2,0 4 6
1 2 1,2 0
5 2 1,2 2
1 2 1 2,3
- 0,4 1 7 0 8
- 0,1 8 3 0 2
- 0,1 6 7 2 8
- 0,0 3 8 3 9 9
- 0,0 1 6 5 0 0
- 0,0 0 3 8 3 6 9
- 0,0 0 1 6 4 9 8
- 0,4 1 7 0 8
- 0,1 8 3 0 2
- 0,1 6 7 2 8
- 0,0 3 8 3 9 9
- 0,0 1 6 5 0 0
- 0,0 0 3 8 3 7 1
- 0,0 0 1 6 4 9 8
0,0 0 0 0
0,0 0 0 0
0,0 0 0 0
0,0 0 0 0
0,0 0 5 2
0,0 0 0 0
0,0 0 0 0
212 8 bd dbx 4
2 dbx 212 8 bd
合适的算式计算结果以上计算用 的浮点数系得到5,10 t?
022 xbx
浙江大学研究生学位课程
《实用数值计算方法,46
习 题
1,The following expression is numerically Unstable for
x near zero.
Evaluate this expression for x=10-3,10-5,10-7,and
Manipulate the expression into a numerically stable
form and estimate the accuracy obtained in evaluating
them.
2,Consider the following two FORTRAN Programs:
EPS=1.
10 EPS=EPS/ 2.
WRITE(6,20) EPS
20 FORMAT(1H,G20.10)
EPS1=EPS+1.
IF (EPS1,GT,1.) GOTO 10
STOP
END
x
x
2sin
cos1?
浙江大学研究生学位课程
《实用数值计算方法,47
EPS=1.
10 EPS=EPS/2.
WRITE(6,20) EPS
20 FORMAT(1H,G20,10)
IF(EPS,GT,0.) GOTO 10
STOP
END
Run the programs and explain the results.