数值运算的误差分析(精)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 数值运算的误差分析
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+-为