实验一 数值运算的误差分析
1.问题的提出
任何数值计算都是一种近似计算,于是研究此误差的来源及防止在整个数值计算中占非常重要的地位。
首先是误差的分类、其次是估计误差的工具最后是一些避免误差产生及传播的手段。
1)模型误差:
实际问题用数学模型刻画时要忽略一些因素,从而造成数学的量和实际的量的误差称为模型误差 2)观测误差:
数学模型用到一批数它可能是观测得到的也可能是计算到的,这种数据误差造成数学量的近似。
3)截断误差:
通常要用数值方法求它的近似解,其近似解与精确解之间的误差称为截断误差 。
例如,函数)(x f 用泰勒(Taylor )多项式
n
n n x n f x f x f f x p !
)0(!2)0(!1)0()0()(2'''++++=
近似代替,则数值方法的截断误差是:
εε(,)!
1()()()()(1
)1(+++=-=n n n n x n f x p x f x R
4)舍入误差:
最后用近似的方法计算数据有误差的数学问题要用有限位数字,这就要求进行基本的四舍五入计算,由此引起的误差称为舍入误差。
例如用3.14159近似代替π,产生的误差 0000026.03014159=-=πR 为舍入误差。
2.误差与有效数字
1)绝对误差: 2)相对误差:
3)有效数字:
若近似值*x 的误差限是某一位的半个单位,该位到*x 的第一位非零数字共有n 位,就说*x 有n 位有效数字,表示
()()
1121*101010---⨯++⨯+⨯±=n n m a a a x ,
其中是),,1(n i a i =0到9中的一个数字,0≠i a ,m 为整数,且
1*102
1
+-⨯≤
-n m x x
例如:
若*x 具有n 位有效数字,则其相对误差限为:)1(1
*1021
--⨯≤
n r a ε 例一:要是20的近似值的相对误差限小于0.1%,要取几位有效数字? 设取n 位有效数字,由定理1,)1(1
*1021
--⨯≤
n r a ε。
由于 4.420=,知1a =4,故只要取4=n ,就有1.01010125.033*
=<⨯≤--r ε%,
即只要对20的近似值取4 位有效数字,其相对误差限就小于0.1%,此时由开
4.472≈。
4)误差的积累运算:
≈±)(*2*1x x ε)(*1x ε+)(*
2x ε; ≈)(*2*1x x ε*2*2*1
)(x x x +ε)(*
1x ε; ≈
)/(*
2*1x x ε2
*2
*
1*2*2*1)
()(x
x x x x εε+;
5)函数的误差:
设)(x f 是一元函数,x 的近似值为*x 以)(*x f 近似)(x f ,其误差记作
)((*x f ε;那么函数的误差是:)()())((***x x f x f εε'≈
当f 多元函数时,例如计算A ),,(1n x x f =。
如果 n x x ,,1 的近似值为 *
*1,,n x x 则A 的近似值为 ),,(**1*n x x f A =,
于是由泰勒展开得函数值*A 的误差为)(*A e ; 于是函数的误差限:)()(
)*(*
1
*k n
k k
x x f A εε∑=∂∂≈;
(2) 而*
A 相对误差限为:*
*1****)()()*(A x x f A A A k
n
k k
r r
εεεε∑=∂∂≈==)
((3) 例二:已测得某场地长l 的值为m l 110*=,宽d 的值为m d 80*=,已知
m l l 2.0*≤-,m d d 1.0*≤-,试求面积 ld s =的绝对误差限与相对误差限。
解:因ld s =,
d l s =∂∂,l d
s =∂∂,由(3)知 )()()()(
)*(****d d
s
l l s s εεε∂∂+∂∂≈,其中m d l s 80)(**==∂∂,
m l d s 110*==∂∂, 而m l 2.0)(*=ε,m d 1.0)(*=ε 于是
绝对误差限为 m s 27)1.0(110)2.0(80)(*=⨯+⨯≈ε, 相对误差限为
%31.08800
27
)
()
()(*
***
**
=≈
=
=
d l s s s s r εεε 6)避免误差危害的若干原则 ● 避免接近零数作除数。
例如:2
12
12
12
1)1())1((1x x x x ++=-+
顺便指出,有时为避免中间结果益出也要变换公式, 例如: y x ≥,21
22
12
2
))(1()(x y x y x +=+
● 避免相近数相减。
例如:)
)1((1)1(1212121x x x x ++=-+
再如求01562=++x x 的根,取五位数字
982.55982.2728)128(282121=+=-+=x 018.0982.2728)128(282122=-=--=x 2x 的有效数字就少了。
可用01786288
.0972
.551
1
1
2===x x 试比准确解:017862840.0,982137159.5521==x x ; ● 防止大数‘吃’小数。
例如:1.0010010=+++=a a a a x ,0001.010021====a a a 如果按先后次序10a a +得0.1,再加2a 还是0.1, 1=x
如果从后往前加, ,0002
.00001.00001.0=+最后11.001.01.0=+=x ; ● 减少计算步聚。
例如:计算多项式的值
x
x x x ++-+11
1为
x
x
x x cos 1sin sin cos 1+-为
43223140a x a x a x a x a ++++宜用43210)))(((a x a x a x a x a ++++
这就是最著名FFT算法数值例。
注意递推公式。
有些公式计算时误差不断积累越来越大,有些公式误差则不会增加前者称数值不稳定的应避免使用,后者称数值稳定的,我们应该采用着类公式,请看例子。
计算出 ,1,0,1,6321.01110=-=≈-=--n nI I e I n n 可算出728.08-≈I 误差大的惊人,竟出现了负数。
但若用 ,8,9,/)1(,0684.019=-=≈-n n I I I n n 算出0I 有四位有效数字。
不难看出前一算法所得8I 的误差是0I 的!8倍,而后一算法所得0I 的误差是9I 的!
91 .
参考思考题: 1、 2、 3、
实验一的目的是什么?以后的内容起什么作用? 在实验一里主要提醒什么?或不叫“实验一”,叫“预备知识”。