数值算法的稳定性
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用上式计算 Im 可使计算的误差减少5倍,因而它对 应的算法是数值稳定的算法。
线性代数一④
有递推公式
In
5In1
1 n
(n
1,2,...)
15/32
在该例中,用上述公式计算积分的值,I0=ln6-ln5
≈0.182322的舍入误差在计算过程迅速传播,每次扩大 5倍,致使I12= -0.32902110×10-2 严重失真,所以这一 公式是不稳定的。
n
I9n/32
5 0.0284684
4 0.0343063
3 0.0431387
2 0.0580389
1 0.0883922
最后得: I0=0.182322
与我们开始计算的I0≈0.182322是一样的
该公式给 出的算法
I n1
1 5
In
1 5n
(n
m,
m
1,...,2,1)
就是稳定 的
11
就是稳定
In1 5 In 5n (n m, m 1,...,2,1) 的
线性代数一④
五、简化计算步骤,减小运算次数,避免误差积累18/32
简化计算步骤是提高程序执行速度的关键,它不仅可以节省 时间,还能减少舍入误差。
例6:计算9255的值 若逐个相乘要用254次乘法, 9255 = 9•9•9•……•9
≈0.182322的舍入误差在计算过程迅速传播,每次扩大 5倍,致使I12= -0.32902110×10-2 严重失真,所以这一 公式是不稳定的。
线性代数一④
7/32
n
In
n
In
n
In
n
In
1 0.0883922 6 0.0243239 11 0.0173247 16 -10.1569
2 0.058038 7 0.0188109 12 -0.00329022 17 50.8433
线性代数一④
6/32
见教材第2、10—11页 In有以下性质
例:计算
In
1 xn dx
0 x5
(1)In>0; (2)In单调递减
(3) lim n
In
0;
(4)
1
6n
1
In
1
5n
1
(n 1)
有递推公式
In
5In1
1 n
(n
1,2,...)
在该例中,用上述公式计算积分的值,I0=ln6-ln5
有效数字越多,误差越小,计算结果越精确.
线性代数一④
4/32
相对误差与有效数字的关系如下:
定理1.1 设近似数x=±0.a1a2…an×10m有n位有效数字,
则其相对误差限为
r
1 2a1
10 n1,
定理1.2 设近似数x=±0.a1a2…an×10m的相对误差限
为
r
1 2(a1 1)
13/32
三、防止接近零的数做除数
分母接近零的数会产生溢出错误,因而产生较大的误差,此时 可以用数学公式化简后再做.
分母接近0,如何改进? 也可以用等价无穷小替换
如:|x|<<1时 1 cos x sin x sin x 1 cosx
四、要控制舍入误差的累积和传播 In有以下性质
例5 计算
1 n
(n
1,2,...)
舍入误差在计算过程迅速传播,每次扩大5倍.
所以此算法是不稳定的。
线性代数一④
8/32
1
而将公式变为
1
In
5In1
1
n
(n
1,2,...)
In1 5 In 5n (n m, m 1,...,2,1)
然后取充分大的m对应的Im的一个估计值为计算初 值,再逐步用上式算出Im-1 ,Im-2 ,...,I1。
但若写成 9255 = 9• 92 • 94 • 98 • 916 • 932 • 964 • 9128
只需做14次乘法运算即可。
9255 = ((((((( 92 )2 )2 )2 ) 2 )2 )2 )2 /9
只需8次乘法和1次除法运算。
例7:设A、B、C、D分别是1020、 2050、 501、 1100的 矩阵,试按不同的算法求矩阵乘积E=ABCD. 解:由矩阵乘法的结合律,可有如下算法
例2:当x较大时,计算 x 1 x
化成 x 1 x
1
x 1 x
线性代数一④
11/32
例3:用四位浮点数计算
11 759 760
解: 1 1 0.1318102 0.1316102 0.2105
759 760
1 759
7结160 果只有一位有效数字,有效7159数 716字0 大量损失,造成相
In
0.0153676 0.0169265 0.0933742 0.0212326 0.0233250
n
In
5 0.0284684
4 0.0343063
3 0.0431387
2 0.0580389
1 0.0883922
最后得: I0=0.182322
与我们开始计算的I0≈0.182322是一样的
该公式给 出的算法
用上式计算 Im 可使计算的误差减少5倍,因而它对应 的算法是数值稳定的算法。
由:
(4)
1 6n
I n1
1 5n
(n 1) 可取
11 Im 6(m 1) 2 5(m 1) (m 1)
11
I20线性6代数21一2④5 21 0.00873061自n=20计算到n=1,
线性代数一④
2/32
|e| = |x* - x| , 称 为近似值x的绝对误差限,简称误差限或精度
|
er
||
e x*
||
x*x x*
|
r
则称r 为近似值x的相对误差限。
线性代数一④
3/32
有效数字
近似数x=±0.a1a2…an×10m
如果|e| = |x* - x| 1/2 10m-n 称近似数x准确到小数点后第n位,从这小数点后 第n位数字直到最左边非零数字之间的所有数 字都称为有效数字.
In
1 xn dx 0 x5
见线教性材代第数2一、④10—11页
(1)In>0; (2)In单调递减
(3) lim n
In
0;
(4)
1 6n
I n1
1 5n
(n 1)
有递推公式
In
5In1
1 n
(n
1,2,...)
14/32
在该例中,用上述公式计算积分的值,I0=ln6-ln5
1/32
上节课内容回顾
设x*是准确数, x是x*的近似数,称e = x* - x 为近 似值x的绝对误差,简称误差。
——反映是近似值与精确值的绝对差值
称
er
e x*
x*x x*
为近似值x的相对误差
——反映是近似值与精确值的近似程度 通常用百分数来表示,相对误差越小,近似程度越高
绝对误差限,相对误差限
≈0.182322的舍入误差在计算过程迅速传播,每次扩大 5倍,致使I12= -0.32902110×10-2 严重失真,所以这一 公式是不稳定的。 而将公式变为
I n1
1 5
In
1 5n
(n
m,
m
1,...,2,1)
然后取充分大的m对应的Im的一个估计值为计算初 值,再逐步用上式算出Im-1 ,Im-2 ,...,I1。
下面通过例子给出算法数值稳定的几个原则:
线性代数一④
10/32
控制误差传播的几个原则
一、防止相近的两数相减
(会耗失许多有效数字,可以用数学公式化简后再做)
例1: 各有五位有效数字的两个数23.034与22.993相减. 23.034-22.993=0.041
0.041只有两位有效数字,有效数字的耗失,说明准确度减 小,因此,在计算时需要加工计算公式,以免这种情况发生.
n
In
n
1 0.0883922 6
2 0.058038 7
3 0.0431387 8
4 0.0343063 9
5 线0性.0代284数68一6 ④10
In
0.0243239 0.0188109 0.0212378 0.0170566 0.0147169
nInn1 0.0173247 1612 -0.00329022 17
n
In
n
20 0.00873016 15 0.0105205 10
19 0.00825397 14 0.0112292 9
18 0.00887552 13 0.0120399 8
17 0.00933601 12 0.0129766 7
16 0.00989750 11 0.0140713 6
In
0.0153676 0.0169265 0.0933742 0.0212326 0.0233250
矩阵乘积AB的计算量分析
a a a … a 11
12
13
1n
a a a … a 21
22
23
2n
......… ...
a a a …a m1
m2
mm-1
mn
b b b … b 11
12
13
1s
b b b … b 21
22
23
2s
......… ...
b b b … b n1
n2
nn-1
ns
=[cij]ms
c = c 因为 ij a bik kj 计算每一个 ij的计算量为n
m n s 所以上面A mn B ns的计算量为N=
线性代数一④
20/32
作业:P12—13 1、3、 4、6、8 作业:P13 9、12 实验内容 实验1.1、实验 1.2(P1312)
线性代数一④
21/32
实验1.1(数值微分精度与步长的关系)
实验目的:数值计算中误差是不可避免的,要求通过 本实验初步认识数值分析中两个重要概念:截断误差 和舍入误差,并认真体会误差对计算结果的影响。
1. E=((AB)C)D. 2. E=A(B(CD)). 3. E=(A(BC))D.
线性代数一④
计算量N1=11500flop 计算量N2=125000flop 计算量N3=2200flop
19/32
计算量:一个算法所需的乘除运算总次数,单位是flop. 计算量也是衡量一个算法好坏的重要标准。
3 0.0431387 8 0.0212378 13 -0.0933742 18 -2540161
4 0.0343063 9 0.0170566 14 -0.395442 19 1270.86
5 0.0284686 10 0.0147169 15 2.04388 20 -6354.23
In
5In1
10 n1,
则它至少有n位有效数字。
线性代数一④
5/32
§1.4 算法的数值稳定性 (数值计算中值得注意的问题)
一个算法如果输入数据有误差,而在计算过 程中舍入误差不增长,则称此算法是数值稳定的, 否则称此算法为不稳定的。
换句话说:若误差传播是可控制的,则称此算法是 数值稳定的,否则称此算法为不稳定的。
13 -0.0933742 18
14 -0.395442 19
15 2.04388 20
In
-10.1569 50.8433 -2540161 1270.86 -6354.23
16/32
而将公式变为
11 In1 5 In 5n (n m, m 1,...,2,1)
然后取充分大的m对应的Im的一个估计值为计算初 值,再逐步用上式算出Im-1 ,Im-2 ,...,I1。
对误差扩大。这是由两个比较接近的数相减造成的。
1 759
1 760
1 759 760
1 0.5768106
0.1734105
结果仍然有四位有效数字。这说明了算法设计的 重要性。
注:数值计算中要避免有效数字减少。
线性代数一④
12/32
二、防止大数吃小数 当两个绝对值相差很大的数进行加法或减法运算时,绝对 值小的数有可能被绝对值大的数"吃掉"从而引起计算结果
很不可靠.
例4:求一元二次方程x2-(109 +4)x+4×109=0 的实数根.
采用因式分解法,很容易得到两个根为x1=109,x2=4.如采用 字长为8位的计算机来计算,求得根为x1=109 ,x2=0.(怎样 计算可得较好的结果?)
两者结果不同,因为计算机计算时做加减法要 “对 阶”,“对阶”的结果使大数吃掉了小数.产生了误差.为了 避免由于上述原因引起的计算结果严重失真,可以根据一 些具体情况,有时需要把某些算式改写成另一种等价的形 式. 线性代数一④
17/32
n
In
n
In
n
20 0.00873016 15 0.0105205 10
19 0.00825397 14 0.0112292 9
18 0.00887552 13 0.0120399 8
17 0.00933601 12 0.0129766 7
16 0.00989750 11 0.0140713 6
用上式计算 Im 可使计算的误差减少5倍,因而它对应
的算法是数值稳定的算法。
由:
(4)
1
6n
1
I
n
1
5n 1
(n 1)
11
可取
11 Im 6(m 1) 2 5(m 1)
I20线性6代数21一2④5 21 0.00873061自n=20计算到n=1,
n
In