第一章 误差分析的基本概念
§1 误差的来源
1. 误差概念 2. 产生误差的主要原因
① 模型误差:在解决实际问题时,在一定条件下抓住主要因素将现实系统理想化的数学描述称为实际问题的数学模型,这种数学描述常常是近似的,数学模型与实际系统之间存在误差,这种误差称为模型误差。
② 观测误差:数学模型中往往含有一些由观测得到的物理量(如温度、电阻、长度)或由物理量估算出的模型参数,这些观测物理量或模型参数常常与实际数据存在误差。这种由观察产生的误差称为观测误差。
③ 截断误差:数值计算中用有限运算近似代替无穷过程产生的误差。例如计算一个无穷次可微函数的函数值时,理论上只要能算出这个函数的泰勒级数值即可,但是实际工程上仅用泰勒级数中前面有限项来近似计算函数值,而舍去高阶无穷小量。这个被舍的高阶无穷小量正是截断误差。
④ 舍入误差:计算中按四舍五入进行舍入而引起的误差或因计算机字长有限,数据在内存中存放时进行了舍入而引起的误差。 3. 举例说明
例1 设一根铝棒在温度t 时的实际长度为L t , 在 t=0℃时的实际长度为L 0, 用l t 来表示铝棒在温度为t 时的长度计算值,并建立一个数学模型:l t =L 0(1+αt ) , 其中α是由实验观察得到的常数 α=(0.0000238±0.0000001)1/℃,称L t -l t 为模型误差,0.0000001/℃是α的观测误差。这个问题中模型误差产生的原因是:实际上L t 与t 有微弱关系,也就是说模型未能完全反映物理过程。
∞
2
例2 已知e 在 x=0 处展开的泰勒级数为:e =
x
x
∑
n =0
x n !
n
为了计算近似值, 可取前面有限项计算. 如取前面五项计算, 计算过程中与计算结果都取五位小数得e ≈
e =2.71828,于是截断误差为: 1+1+1/2+1/6+1/24≈2.7083,e 取五位小数时的准确值为~
∑n ! ≈2. 71828
n =5
∞
1
-2. 7083=0. 00995
这表明:只要在计算中采用了有限步运算近似代替无限步运算的方法,截断误差就一定存在。
例3. π=3.1415926„;2=1.41421356„,在计算机上运算时只能用有限位小数,如果我们取小数点后四位小数则:ρ1=π-3.1416 =-0.0000074„;ρ2=2-1.4142=0.000013„就是舍入误差。另外值得一提的是十进制数转化为二进制数时有时也引起循环小数,因计算机上浮点数存储位数限制而舍弃尾部部分小数,如 (0. 1)10=(0. [1**********]11⋅⋅⋅⋅⋅⋅)2存储时会引起舍入误差。这个数制转化问题表明:只要计算机内部采用二进制运算,无论计算机发展的多完善,这个舍入误差理论问题永远存在。
总的来说,误差一般有:模型误差;观测误差;截断误差;舍入误差。在计算方法这门课程中,截断误差和舍入误差是误差的主要研究对象,讨论它们在计算过程中的传播和对计算结果的影响,并找出误差的上下界,对分析和改进算法都有重大的实际意义。
§2 绝对误差 相对误差 有效数字
定义1:设x 为准确数,x *为x 的近似值,记e *=x-x* 称e *为x 与x * 的误差,也叫x 与x *的绝对误差。显然,x= x*+ e* 即近似值加误差就是准确值,因此把e *也叫做近似值x *的修正值,或者说近似值加上修正值就是准确值。
误差可正可负,且有量纲单位,当误差为负时,近似值偏大,叫做“强近似”,当误差为正时,近似值偏小,叫做“弱近似”。
例1 x=π=3.14159265„ 按四舍五入的原则保留不同位数的小数,计算其误差。
用一位数字近似表示π x 1*=3 e 1*≈0. 14159265
**
用三位数字近似表示π x 3=3. 14 e 3≈0. 00159265
**用五位数字近似表示π x 5=3. 1416 e 5≈-0. 00000735
**
用六位数字近似表示π x 6=3. 14159 e 6≈0. 00000265
***
定义2:如果|e |=|x -x |≤ε ε*就叫做近似值x *的“误差限”,也叫绝对误差限。误差限一定是
一个正数。我们常用x =x ±ε来表示近似值x *的精确度或准确值所在的范围(x -ε,。 x +ε)
现在引入有效数字的概念。如果近似值x *x *数字共有n 位,我们就说x *有“n 位有效数字”,或者说x *准确到该位。用四舍五入法取准确值的前n 位作为近似值x *,则x *有n 位有效数字。
以下观察有效数字的位数n 与误差限之间的关系
|π-x 3|=0. 00159265
*
******
≤
-21
⨯10=0. 0052
3位有效数字 3. 14
3
21
|π-x 5|=0. 00000735|π-x 6|=0. 00000265
*
*
≤
-41
⨯10=0. 000052
-51
⨯10=0. 0000052
5位有效数字 3. 1416
54321
≤
6位有效数字 3. 14159
6
54321
定义3:若用x *表示x 的近似值,并将x *表示成x *=±0. α1α2α3⋅⋅⋅αn ⨯10p , (αi 及p 为整数,
1≤α1≤9; 0≤αi ≤9, 2≤i ≤n )若其误差限为
|x -x *|≤
p -n 1⨯102
1
p -n
就称近似值x 具有n 位有效数字.
利用定义3,由有效数字位数n 和近似值x 可以确定误差限:2⨯10 。
注意,首先需要特别指出的是,在有效数字的记法中,有效数字0.123×10-3 和0.1230×10-3是有区别的,前者只有三位有效数字,后者却有四位有效数字;其次,如果只知道x * =300000的绝对误差限不超
*
*
过500=
31
⨯102
,则应把它写成300×103或3.00×105, 如果仍记为300000,则表示它的误差限不超过0.5,
这是因为前者有三位有效数字,后者有六位有效数字;再次,还需要指出的是,一个准确数字的有效位数,应当说有无穷多位。例如对于1/4=0.25不能说只有两位有效数字。
例2 若x *=3587.64是x 的具有六位有效字的近似值,那么它的误差限为
|x -x *|≤
11
⨯104-6=⨯10-2=0. 00522
*
r
*e e *x -x ***
定义4:称e ==为近似值x e r 比较小时,有时也把*称
x x x
为近似值x *相对误差无量刚。相对误差可正可负。我们把相对误差绝对值的上界叫做相对误
*
差限,记作εr =ε*/|x *|, 其中ε*是x *的误差限(ε*也叫绝对误差限) 。
*p
推论1. 近似数x =±0. α1α2... αn ⨯10(n 、αi 及p 为整数, 1≤α1≤9; 0≤αi ≤9, 2≤ i≤n )有n 位有效数字,则其相对误差限为:
ε=ε*≤
*r
*
12α1
|x |
⨯10
-(n -1)
证明: 由于x *=±0. α1α2... αn ⨯10p 有n 位有效数字,故x *与x 的绝对误差限应为
|x -x |≤
*
1
⨯102
p -n
由相对误差限的定义得:
ε*r =
而 x *=±10
p
x -x *x
*
1
⨯10≤
x *
p -n
(α
1
⨯10-1+α2⨯10-2+... +αn ⨯10-n )
p
|x *|=10
(α
1
⨯10-1+α2⨯10-2+... +αn ⨯10-n )≥α110
p -1
1
⨯10p -n
11
εr *≤2*≤10(p -n )-(p -1)=101-n
2α12α1|x |
由此可以看出,有效数字位数越多,相对误差限就越小。
推论2:若近似数x *=±0. α1α2... αn ⨯10p ( n, αi 及p 为整数,1≤α1≤9; 0≤αi ≤9,2≤i ≤n )
的相对误差限满足:
εr *≤
则x *至少有n 位有效数字。
2α1+11
⨯101-n
证明:|x -x |=|x |⋅εr ≤|x |
****
2α1+11
⨯10
1-n
x *=±0. α1α2... αn ⨯10p (高位进1, 舍去尾数, 其值变大) =±10
p
(α
1
⨯10-1+α2⨯10-2+... +αn ⨯10-n )
p -1
|x -x *|≤(α1+1)10
1
101-n =⨯10
22α1+11
p -n
由定义3知道:近似数x *=±0. α1α2... αn ⨯10p 有n 位有效数字。证毕。
例3. 用x *=2. 72来表示e 具有三位有效数字的近似值,相对误差限是多少?
1
解:x *=2. 72=0.272×10 , n=3 , p=1 , α1=2 . 由推论1得: ε*r ≤
1
⨯10-2=0.0025 2⨯2
例4. 为了使20的近似值的相对误差小于0. 1%,问至少要取几位有效数字? 解: 由推论2 εr *≤
12α1+1⨯101-n
20=0. 4... ⨯10 故α1=4
-3
按题目要求 ε* r
令.
12(α1+1)
⨯101-n
取n=4查数学用表20≈4. 472,其相对误差小于 0.1%
§3. 和 差 积 商的误差
1. 和 差 积 商的误差
设x *是x 的近似值,y *是y 的近似值,用x *±y *来表示x ±y 的近似值,则它的误差为
(x±y)-(x*±y *)=(x-x*) ±(y-y*) (1-3-1) 于是有如下结论:
结论1: 和的误差是误差之和,差的误差是误差之差。
|(x±y)-(x*±y *)|≤|x-x*| +|y-y*| (1-3-2)
结论2: 两个数和或差的绝对误差限不超过各数绝对误差限之和。
结论3: 任意多个数和或差的绝对误差限不超过各个数的绝对误差限之和。 结论4: 若令dx =x -x *则相对误差是对数函数的微分
*
e r *=x -x =dx =d ln x (1-3-3)
x x
设u=xy 则lnu=lnx+lny dlnu=dlnx+dlny 于是有如下结论: 结论5 乘积的相对误差是各乘数的相对误差之和。
设u=x/y 则lnu=lnx-lny dlnu=dlnx-dlny 于是有如下结论: 结论6: 商的相对误差是被除数的相对误差减去除数的相对误差。
结论7: 任意多次连乘,连除所得计算结果的相对误差限不超过各乘数和除数的相对误差限之和。 证明: 设 w=(uv)/(xy) 则 lnw=lnu+lnv-lnx-lny ; dlnw=dlnu+dlnv-dlnx-dlny |dlnw|≤|dlnu|+|dlnv|+|dlnx|+|dlny| 证毕。 例1设y=f(x) y =f (x
*
*
) 则y
*
的相对误差是 d ln y =
f
(x )
dx f x '
例2设y =x n 则ln y =n ln x , 因此d ln y =n ⋅d ln x . x n 的相对误差是x 的相对误差的n 倍。
2.一般数值运算的误差估计
**, ⋅⋅⋅, x n 设x 1, x 2, ⋅⋅⋅, x n 的近似值依次是x 1*, x 2,把近似值代入函数y=f(x 1, x 2, ⋅⋅⋅, x n ) 运算得y ,显然y 是**
, ⋅⋅⋅, x n )附近有连续y 的近似值,y 的误差、相对误差如何估计?如果函数y=f(x 1, x 2, ⋅⋅⋅, x n ) 在(x 1*, x 2
**
*
的二阶偏导数,函数值y 的误差可用多元函数在(x 1, x 2, ⋅⋅⋅, x n ) 处的泰勒展开式得到。
**, ⋅⋅⋅, x n y=f(x 1*, x 2)
=f (x 1, x 2, ⋅⋅⋅, x n ) +
∂f ∂x 1
⋅(x 1*-x 1) +
∂f ∂x 2
*
⋅(x 2-x 2) +⋅⋅⋅+
*
∂f ∂x n
*
⋅(x n -x n ) +o (|X -X *|)
令∆x i =x i -x i *, ∆y =y -y * 于是y 的误差:
∆y ≈
∂f ∂x 1
⋅∆x 1+
∂f ∂x 2
⋅∆x 2+⋅⋅⋅+
∂f ∂x n
⋅∆x n (1-3-4)
按相对误差定义,y 的相对误差为:
*
e r (y ) ≈
∂f ∂x 1
⋅
x i
f (x 1, x 2, ⋅⋅⋅, x n ) x i x i
*
⋅e r (x i ) +
⋅
∆x 1
+
∂f
∂x 2f (x 1, x 2, ⋅⋅⋅, x n ) x 2
x 2
⋅
x 2
⋅
∆x 2
+⋅⋅⋅+
∂f
∂x n f (x 1, x 2, ⋅⋅⋅, x n ) x n
x n
*
⋅⋅e r (x n )
⋅
x n
⋅
∆x n
*
e r (y ) ≈
∂f ∂x 1
⋅
∂f
f (x 1, x 2, ⋅⋅⋅, x n ) ∂x 2f (x 1, x 2, ⋅⋅⋅, x n )
⋅
*
⋅e r (x 2) +⋅⋅⋅+
∂f
∂x n f (x 1, x 2, ⋅⋅⋅, x n )
⋅
(1-3-5)
例3 测得某桌面的长a 的近似值a *=120cm,宽b 的近似值b *=60cm,若已知|a-a*|≤0.2cm ,|b-b*|≤
0.1cm ,试求近似面积s *=a*b *的绝对误差限与相对误差限。
解: 因为 s=ab ,∂s =b , ∂s =a ,由(1-3-4)和(1-3-5)式
∂a
∂b
e *(s *) ≈
*
∂s ∂s ⋅e (a *) +⋅e (b *) =b *⋅e (a *) +a *⋅e (b *) ∂a ∂b
2
|e(s*)|≤|60⨯0.2|+|120⨯0.1|=24cm
|e*r (s*)|=
e *(s *) s *
=
e *(s *) a *b *
≤24≈0. 3300
7200
故s *的绝对误差限为24 cm2,相对误差限为0.33% .
§4 近似计算中需要注意的几个问题
1. 要避免两个相近的数相减
在数值计算中,两个相近的数相减,则这两个数的前几位相同的有效数字会在在它们之差中消失,有效数字位数大大减少。例如计算 (1-cos x ) x 时,当x 接近于零则应变换(1-cos x ) sin x 为sin x (1+cos x ) 来计算;再例如计算+x -
x ,当x 充分大时应变换+x -
x 为(+x +
x ) 来
计算;当x=1000时,若取4位有效数字计算,+x =31. 64, x =31. 62,两者相减结果为0.02,这个结果只有一位有效数字。但用1(+x +x ) 计算,则得0.01581, 它有四位有效数字。这说明应当尽量避免出现这类运算,改变计算方法可以避免两个相近的数相减而引起有效数字损失。通常根据具体情况采用一些数学上的恒等变形如因式分解、分子分母有理化、三角函数恒等式、Taylor 展开式等计算公式。
2. 两个相差很大的数进行计算时,要防止大数“吃掉”小数 例1 计算二次方程x 2-(109+1)x +109=0
解:因式分解得二次方程两根为:x 1=109,x 2=1; 按求根公式:x 1, 2=(-b ±b 2-4ac ) (2a ) ;
其中 -b =109+1=0. 1⨯1010+0. 0000000001⨯1010。若计算机上只能表达到小数后八位,则对阶运算时1=0. 0000000001⨯1010在计算中将不起作用,因此,-b ≈0. 1⨯1010=109。类似的分析将有b -4ac ≈b 2,b 2-4ac ≈|b | (对阶运算时4ac 作零处理)故求得两个近似根x 1≈109 , x 2≈0;类似
2
方程还有许多如 :
x -(10
2
n
+1)x +10
n
=0
这表明无论计算机发展的多完善,这个大数“吃”小数的问题永远存在。因此,设计算法或编制程序时,一般不要将大小相差非常悬殊的两个数放在一起来运算。
3. 要注意计算步骤的简化,减少运算的次数
简化计算公式十分重要,它直接影响着计算的速度和误差的积累,有时可以使一项无法实现的计算能够实现,快速富氏变换就是典型例子。下面我们以计算多项式的值为例来说明简化计算公式的重要性。
例2 计算多项式p (x )=a n x n +a n -1x n -1+... +a 0 (1-4-1)的值,若直接用上面公式来计算,计算k 次项a k x k 的值需要进行k 次乘法,所以计算多项式p (x )=a n x n +a n -1x n -1+... +a 0共需n(n+1)/2次乘法和n 次加法才能得到批p (x ) 的值,但如果我们将公式(1-4-1)改写成下面的形式:
p (x )=x (x ⋅⋅⋅(x (a n x +a n -1) +a n -2) +⋅⋅⋅+a 1) +a 0
令 ⎨
⎧
u 0=a n
⎩u k =u k -1⋅x +a n -k
(1-4-2)
对k=1,2,…, n 反复执行算式(1-4-2)的第2式,则共需n 次乘法和n 次加法即可得到一个多项式值。这就是著名的秦九韶算法。从上面简单的例子可以看出化简公式不仅能减少运算次数,提高计算速度,而且还能简化逻辑结构,减少误差积累。
4. 使用递推关系要注意递推方向的选择,以控制误差的扩大 例3 计算 I n =e -1⎰0x n e x dx n=0,1,2,„,7
1
利用定积分的分部积分法,容易得出递推关系式:I n =1-nI n -1 ,在已知I 0之后可算I 1, I 2⋅⋅⋅I 7而得到表(1-4-1)中的第一列。当然也可以按恒等形式的递推关系式:I n-1=(1-I n ) /n ,在已知I 7之后,可算得
I 6, I 5⋅⋅⋅而得到表(1-4-1)中的第二列,这八个积分的精确值为表(1-4-1)中的第三列。
表(1-4-1) 两种递推算法对比表
由表中看出,在第一种算法中,随着递推次数的增大,计算结果偏离真值越来越远;而在第二种算法中,随着递推次数的增大,计算结果能稳定地接近真值。我们称第一种算法是不稳定的递推算法,第二种算法是稳定的递推算法。两种算法仅仅只是递推顺序不同,为什么却会出现不同的误差传播呢?如果精确值I 0
***
的近似值I 0有误差E 0=I 0-I 0;精确值I 1=1-I 0,近似值I 1*=1-I 0,I 1与I 1*有误差E 1=I 1-I 1*=-E 0;„,
****
精确值I n 的近似值I n 有误差E n =I n -I n =(-1) n (n ! ) E 0;这就是说若I 0有误差E 0,则I n 的误差的绝对值就是
**误差E 0的绝对值的n! 倍;类似分析可以知道若近似值I n 有误差E n ,则I 0的误差的绝对值就是误差E n 的绝
对值的1/(n! )倍。这表明第一种算法计算过程中误差不断扩大,而第二种算法计算过程中误差不断被缩小,这正是算法是否稳定的实质。
通过上述几个问题的简单讨论,我们可以看出,即使有了数学模型,进一步甚至数学上已经有了完善的结果,但仍然存在能不能在计算机上解算和如何实现解算的问题。所以我们必须研究数值计算方法,寻求数学问题在计算机上的有效算法。
习题一
1.下列各近似数的绝对误差限是最末位的的半个单位,试指出各近似数的绝对误差限及其有效数字位数。 x 1=-3. 105, x 2=0. 001, x 3=0. 100, x 4=253. 48, x 5=6⨯10,x 6=6000
32
2.用秦九韶法计算P(x)=2x+7x-9 在x=2处的值。
3.若a=1.1062, b=0.947是经四舍五入后得到的近似值,问a+b, a×b 有几位有效数字。
*
*
*
*
*
3
*
4.设下列近似数均为有效数字,试求各近似数的绝对误差、相对误差和有效数字的位数。
(1) 3580; (2)0.00476; (3) 0.1430×103; (4) 2958×10-2; (5) 5.85000 .
1
5.真空中自由落体运动距离s 与时间关系由公式s=gt 2确定,假定重力加速度g 是准确的,而对t 的测
2
量有±0.1秒的误差,证明当t 增加时,距离S 的绝对误差增加而相对误差却减少。 6.若1/4用精确值0.25来表示,问有多少位有效数字。
7.正方形的边长约为100cm ,应该怎样测量,才能使其面积的误差不超过1cm 2。
第一章 误差分析的基本概念
§1 误差的来源
1. 误差概念 2. 产生误差的主要原因
① 模型误差:在解决实际问题时,在一定条件下抓住主要因素将现实系统理想化的数学描述称为实际问题的数学模型,这种数学描述常常是近似的,数学模型与实际系统之间存在误差,这种误差称为模型误差。
② 观测误差:数学模型中往往含有一些由观测得到的物理量(如温度、电阻、长度)或由物理量估算出的模型参数,这些观测物理量或模型参数常常与实际数据存在误差。这种由观察产生的误差称为观测误差。
③ 截断误差:数值计算中用有限运算近似代替无穷过程产生的误差。例如计算一个无穷次可微函数的函数值时,理论上只要能算出这个函数的泰勒级数值即可,但是实际工程上仅用泰勒级数中前面有限项来近似计算函数值,而舍去高阶无穷小量。这个被舍的高阶无穷小量正是截断误差。
④ 舍入误差:计算中按四舍五入进行舍入而引起的误差或因计算机字长有限,数据在内存中存放时进行了舍入而引起的误差。 3. 举例说明
例1 设一根铝棒在温度t 时的实际长度为L t , 在 t=0℃时的实际长度为L 0, 用l t 来表示铝棒在温度为t 时的长度计算值,并建立一个数学模型:l t =L 0(1+αt ) , 其中α是由实验观察得到的常数 α=(0.0000238±0.0000001)1/℃,称L t -l t 为模型误差,0.0000001/℃是α的观测误差。这个问题中模型误差产生的原因是:实际上L t 与t 有微弱关系,也就是说模型未能完全反映物理过程。
∞
2
例2 已知e 在 x=0 处展开的泰勒级数为:e =
x
x
∑
n =0
x n !
n
为了计算近似值, 可取前面有限项计算. 如取前面五项计算, 计算过程中与计算结果都取五位小数得e ≈
e =2.71828,于是截断误差为: 1+1+1/2+1/6+1/24≈2.7083,e 取五位小数时的准确值为~
∑n ! ≈2. 71828
n =5
∞
1
-2. 7083=0. 00995
这表明:只要在计算中采用了有限步运算近似代替无限步运算的方法,截断误差就一定存在。
例3. π=3.1415926„;2=1.41421356„,在计算机上运算时只能用有限位小数,如果我们取小数点后四位小数则:ρ1=π-3.1416 =-0.0000074„;ρ2=2-1.4142=0.000013„就是舍入误差。另外值得一提的是十进制数转化为二进制数时有时也引起循环小数,因计算机上浮点数存储位数限制而舍弃尾部部分小数,如 (0. 1)10=(0. [1**********]11⋅⋅⋅⋅⋅⋅)2存储时会引起舍入误差。这个数制转化问题表明:只要计算机内部采用二进制运算,无论计算机发展的多完善,这个舍入误差理论问题永远存在。
总的来说,误差一般有:模型误差;观测误差;截断误差;舍入误差。在计算方法这门课程中,截断误差和舍入误差是误差的主要研究对象,讨论它们在计算过程中的传播和对计算结果的影响,并找出误差的上下界,对分析和改进算法都有重大的实际意义。
§2 绝对误差 相对误差 有效数字
定义1:设x 为准确数,x *为x 的近似值,记e *=x-x* 称e *为x 与x * 的误差,也叫x 与x *的绝对误差。显然,x= x*+ e* 即近似值加误差就是准确值,因此把e *也叫做近似值x *的修正值,或者说近似值加上修正值就是准确值。
误差可正可负,且有量纲单位,当误差为负时,近似值偏大,叫做“强近似”,当误差为正时,近似值偏小,叫做“弱近似”。
例1 x=π=3.14159265„ 按四舍五入的原则保留不同位数的小数,计算其误差。
用一位数字近似表示π x 1*=3 e 1*≈0. 14159265
**
用三位数字近似表示π x 3=3. 14 e 3≈0. 00159265
**用五位数字近似表示π x 5=3. 1416 e 5≈-0. 00000735
**
用六位数字近似表示π x 6=3. 14159 e 6≈0. 00000265
***
定义2:如果|e |=|x -x |≤ε ε*就叫做近似值x *的“误差限”,也叫绝对误差限。误差限一定是
一个正数。我们常用x =x ±ε来表示近似值x *的精确度或准确值所在的范围(x -ε,。 x +ε)
现在引入有效数字的概念。如果近似值x *x *数字共有n 位,我们就说x *有“n 位有效数字”,或者说x *准确到该位。用四舍五入法取准确值的前n 位作为近似值x *,则x *有n 位有效数字。
以下观察有效数字的位数n 与误差限之间的关系
|π-x 3|=0. 00159265
*
******
≤
-21
⨯10=0. 0052
3位有效数字 3. 14
3
21
|π-x 5|=0. 00000735|π-x 6|=0. 00000265
*
*
≤
-41
⨯10=0. 000052
-51
⨯10=0. 0000052
5位有效数字 3. 1416
54321
≤
6位有效数字 3. 14159
6
54321
定义3:若用x *表示x 的近似值,并将x *表示成x *=±0. α1α2α3⋅⋅⋅αn ⨯10p , (αi 及p 为整数,
1≤α1≤9; 0≤αi ≤9, 2≤i ≤n )若其误差限为
|x -x *|≤
p -n 1⨯102
1
p -n
就称近似值x 具有n 位有效数字.
利用定义3,由有效数字位数n 和近似值x 可以确定误差限:2⨯10 。
注意,首先需要特别指出的是,在有效数字的记法中,有效数字0.123×10-3 和0.1230×10-3是有区别的,前者只有三位有效数字,后者却有四位有效数字;其次,如果只知道x * =300000的绝对误差限不超
*
*
过500=
31
⨯102
,则应把它写成300×103或3.00×105, 如果仍记为300000,则表示它的误差限不超过0.5,
这是因为前者有三位有效数字,后者有六位有效数字;再次,还需要指出的是,一个准确数字的有效位数,应当说有无穷多位。例如对于1/4=0.25不能说只有两位有效数字。
例2 若x *=3587.64是x 的具有六位有效字的近似值,那么它的误差限为
|x -x *|≤
11
⨯104-6=⨯10-2=0. 00522
*
r
*e e *x -x ***
定义4:称e ==为近似值x e r 比较小时,有时也把*称
x x x
为近似值x *相对误差无量刚。相对误差可正可负。我们把相对误差绝对值的上界叫做相对误
*
差限,记作εr =ε*/|x *|, 其中ε*是x *的误差限(ε*也叫绝对误差限) 。
*p
推论1. 近似数x =±0. α1α2... αn ⨯10(n 、αi 及p 为整数, 1≤α1≤9; 0≤αi ≤9, 2≤ i≤n )有n 位有效数字,则其相对误差限为:
ε=ε*≤
*r
*
12α1
|x |
⨯10
-(n -1)
证明: 由于x *=±0. α1α2... αn ⨯10p 有n 位有效数字,故x *与x 的绝对误差限应为
|x -x |≤
*
1
⨯102
p -n
由相对误差限的定义得:
ε*r =
而 x *=±10
p
x -x *x
*
1
⨯10≤
x *
p -n
(α
1
⨯10-1+α2⨯10-2+... +αn ⨯10-n )
p
|x *|=10
(α
1
⨯10-1+α2⨯10-2+... +αn ⨯10-n )≥α110
p -1
1
⨯10p -n
11
εr *≤2*≤10(p -n )-(p -1)=101-n
2α12α1|x |
由此可以看出,有效数字位数越多,相对误差限就越小。
推论2:若近似数x *=±0. α1α2... αn ⨯10p ( n, αi 及p 为整数,1≤α1≤9; 0≤αi ≤9,2≤i ≤n )
的相对误差限满足:
εr *≤
则x *至少有n 位有效数字。
2α1+11
⨯101-n
证明:|x -x |=|x |⋅εr ≤|x |
****
2α1+11
⨯10
1-n
x *=±0. α1α2... αn ⨯10p (高位进1, 舍去尾数, 其值变大) =±10
p
(α
1
⨯10-1+α2⨯10-2+... +αn ⨯10-n )
p -1
|x -x *|≤(α1+1)10
1
101-n =⨯10
22α1+11
p -n
由定义3知道:近似数x *=±0. α1α2... αn ⨯10p 有n 位有效数字。证毕。
例3. 用x *=2. 72来表示e 具有三位有效数字的近似值,相对误差限是多少?
1
解:x *=2. 72=0.272×10 , n=3 , p=1 , α1=2 . 由推论1得: ε*r ≤
1
⨯10-2=0.0025 2⨯2
例4. 为了使20的近似值的相对误差小于0. 1%,问至少要取几位有效数字? 解: 由推论2 εr *≤
12α1+1⨯101-n
20=0. 4... ⨯10 故α1=4
-3
按题目要求 ε* r
令.
12(α1+1)
⨯101-n
取n=4查数学用表20≈4. 472,其相对误差小于 0.1%
§3. 和 差 积 商的误差
1. 和 差 积 商的误差
设x *是x 的近似值,y *是y 的近似值,用x *±y *来表示x ±y 的近似值,则它的误差为
(x±y)-(x*±y *)=(x-x*) ±(y-y*) (1-3-1) 于是有如下结论:
结论1: 和的误差是误差之和,差的误差是误差之差。
|(x±y)-(x*±y *)|≤|x-x*| +|y-y*| (1-3-2)
结论2: 两个数和或差的绝对误差限不超过各数绝对误差限之和。
结论3: 任意多个数和或差的绝对误差限不超过各个数的绝对误差限之和。 结论4: 若令dx =x -x *则相对误差是对数函数的微分
*
e r *=x -x =dx =d ln x (1-3-3)
x x
设u=xy 则lnu=lnx+lny dlnu=dlnx+dlny 于是有如下结论: 结论5 乘积的相对误差是各乘数的相对误差之和。
设u=x/y 则lnu=lnx-lny dlnu=dlnx-dlny 于是有如下结论: 结论6: 商的相对误差是被除数的相对误差减去除数的相对误差。
结论7: 任意多次连乘,连除所得计算结果的相对误差限不超过各乘数和除数的相对误差限之和。 证明: 设 w=(uv)/(xy) 则 lnw=lnu+lnv-lnx-lny ; dlnw=dlnu+dlnv-dlnx-dlny |dlnw|≤|dlnu|+|dlnv|+|dlnx|+|dlny| 证毕。 例1设y=f(x) y =f (x
*
*
) 则y
*
的相对误差是 d ln y =
f
(x )
dx f x '
例2设y =x n 则ln y =n ln x , 因此d ln y =n ⋅d ln x . x n 的相对误差是x 的相对误差的n 倍。
2.一般数值运算的误差估计
**, ⋅⋅⋅, x n 设x 1, x 2, ⋅⋅⋅, x n 的近似值依次是x 1*, x 2,把近似值代入函数y=f(x 1, x 2, ⋅⋅⋅, x n ) 运算得y ,显然y 是**
, ⋅⋅⋅, x n )附近有连续y 的近似值,y 的误差、相对误差如何估计?如果函数y=f(x 1, x 2, ⋅⋅⋅, x n ) 在(x 1*, x 2
**
*
的二阶偏导数,函数值y 的误差可用多元函数在(x 1, x 2, ⋅⋅⋅, x n ) 处的泰勒展开式得到。
**, ⋅⋅⋅, x n y=f(x 1*, x 2)
=f (x 1, x 2, ⋅⋅⋅, x n ) +
∂f ∂x 1
⋅(x 1*-x 1) +
∂f ∂x 2
*
⋅(x 2-x 2) +⋅⋅⋅+
*
∂f ∂x n
*
⋅(x n -x n ) +o (|X -X *|)
令∆x i =x i -x i *, ∆y =y -y * 于是y 的误差:
∆y ≈
∂f ∂x 1
⋅∆x 1+
∂f ∂x 2
⋅∆x 2+⋅⋅⋅+
∂f ∂x n
⋅∆x n (1-3-4)
按相对误差定义,y 的相对误差为:
*
e r (y ) ≈
∂f ∂x 1
⋅
x i
f (x 1, x 2, ⋅⋅⋅, x n ) x i x i
*
⋅e r (x i ) +
⋅
∆x 1
+
∂f
∂x 2f (x 1, x 2, ⋅⋅⋅, x n ) x 2
x 2
⋅
x 2
⋅
∆x 2
+⋅⋅⋅+
∂f
∂x n f (x 1, x 2, ⋅⋅⋅, x n ) x n
x n
*
⋅⋅e r (x n )
⋅
x n
⋅
∆x n
*
e r (y ) ≈
∂f ∂x 1
⋅
∂f
f (x 1, x 2, ⋅⋅⋅, x n ) ∂x 2f (x 1, x 2, ⋅⋅⋅, x n )
⋅
*
⋅e r (x 2) +⋅⋅⋅+
∂f
∂x n f (x 1, x 2, ⋅⋅⋅, x n )
⋅
(1-3-5)
例3 测得某桌面的长a 的近似值a *=120cm,宽b 的近似值b *=60cm,若已知|a-a*|≤0.2cm ,|b-b*|≤
0.1cm ,试求近似面积s *=a*b *的绝对误差限与相对误差限。
解: 因为 s=ab ,∂s =b , ∂s =a ,由(1-3-4)和(1-3-5)式
∂a
∂b
e *(s *) ≈
*
∂s ∂s ⋅e (a *) +⋅e (b *) =b *⋅e (a *) +a *⋅e (b *) ∂a ∂b
2
|e(s*)|≤|60⨯0.2|+|120⨯0.1|=24cm
|e*r (s*)|=
e *(s *) s *
=
e *(s *) a *b *
≤24≈0. 3300
7200
故s *的绝对误差限为24 cm2,相对误差限为0.33% .
§4 近似计算中需要注意的几个问题
1. 要避免两个相近的数相减
在数值计算中,两个相近的数相减,则这两个数的前几位相同的有效数字会在在它们之差中消失,有效数字位数大大减少。例如计算 (1-cos x ) x 时,当x 接近于零则应变换(1-cos x ) sin x 为sin x (1+cos x ) 来计算;再例如计算+x -
x ,当x 充分大时应变换+x -
x 为(+x +
x ) 来
计算;当x=1000时,若取4位有效数字计算,+x =31. 64, x =31. 62,两者相减结果为0.02,这个结果只有一位有效数字。但用1(+x +x ) 计算,则得0.01581, 它有四位有效数字。这说明应当尽量避免出现这类运算,改变计算方法可以避免两个相近的数相减而引起有效数字损失。通常根据具体情况采用一些数学上的恒等变形如因式分解、分子分母有理化、三角函数恒等式、Taylor 展开式等计算公式。
2. 两个相差很大的数进行计算时,要防止大数“吃掉”小数 例1 计算二次方程x 2-(109+1)x +109=0
解:因式分解得二次方程两根为:x 1=109,x 2=1; 按求根公式:x 1, 2=(-b ±b 2-4ac ) (2a ) ;
其中 -b =109+1=0. 1⨯1010+0. 0000000001⨯1010。若计算机上只能表达到小数后八位,则对阶运算时1=0. 0000000001⨯1010在计算中将不起作用,因此,-b ≈0. 1⨯1010=109。类似的分析将有b -4ac ≈b 2,b 2-4ac ≈|b | (对阶运算时4ac 作零处理)故求得两个近似根x 1≈109 , x 2≈0;类似
2
方程还有许多如 :
x -(10
2
n
+1)x +10
n
=0
这表明无论计算机发展的多完善,这个大数“吃”小数的问题永远存在。因此,设计算法或编制程序时,一般不要将大小相差非常悬殊的两个数放在一起来运算。
3. 要注意计算步骤的简化,减少运算的次数
简化计算公式十分重要,它直接影响着计算的速度和误差的积累,有时可以使一项无法实现的计算能够实现,快速富氏变换就是典型例子。下面我们以计算多项式的值为例来说明简化计算公式的重要性。
例2 计算多项式p (x )=a n x n +a n -1x n -1+... +a 0 (1-4-1)的值,若直接用上面公式来计算,计算k 次项a k x k 的值需要进行k 次乘法,所以计算多项式p (x )=a n x n +a n -1x n -1+... +a 0共需n(n+1)/2次乘法和n 次加法才能得到批p (x ) 的值,但如果我们将公式(1-4-1)改写成下面的形式:
p (x )=x (x ⋅⋅⋅(x (a n x +a n -1) +a n -2) +⋅⋅⋅+a 1) +a 0
令 ⎨
⎧
u 0=a n
⎩u k =u k -1⋅x +a n -k
(1-4-2)
对k=1,2,…, n 反复执行算式(1-4-2)的第2式,则共需n 次乘法和n 次加法即可得到一个多项式值。这就是著名的秦九韶算法。从上面简单的例子可以看出化简公式不仅能减少运算次数,提高计算速度,而且还能简化逻辑结构,减少误差积累。
4. 使用递推关系要注意递推方向的选择,以控制误差的扩大 例3 计算 I n =e -1⎰0x n e x dx n=0,1,2,„,7
1
利用定积分的分部积分法,容易得出递推关系式:I n =1-nI n -1 ,在已知I 0之后可算I 1, I 2⋅⋅⋅I 7而得到表(1-4-1)中的第一列。当然也可以按恒等形式的递推关系式:I n-1=(1-I n ) /n ,在已知I 7之后,可算得
I 6, I 5⋅⋅⋅而得到表(1-4-1)中的第二列,这八个积分的精确值为表(1-4-1)中的第三列。
表(1-4-1) 两种递推算法对比表
由表中看出,在第一种算法中,随着递推次数的增大,计算结果偏离真值越来越远;而在第二种算法中,随着递推次数的增大,计算结果能稳定地接近真值。我们称第一种算法是不稳定的递推算法,第二种算法是稳定的递推算法。两种算法仅仅只是递推顺序不同,为什么却会出现不同的误差传播呢?如果精确值I 0
***
的近似值I 0有误差E 0=I 0-I 0;精确值I 1=1-I 0,近似值I 1*=1-I 0,I 1与I 1*有误差E 1=I 1-I 1*=-E 0;„,
****
精确值I n 的近似值I n 有误差E n =I n -I n =(-1) n (n ! ) E 0;这就是说若I 0有误差E 0,则I n 的误差的绝对值就是
**误差E 0的绝对值的n! 倍;类似分析可以知道若近似值I n 有误差E n ,则I 0的误差的绝对值就是误差E n 的绝
对值的1/(n! )倍。这表明第一种算法计算过程中误差不断扩大,而第二种算法计算过程中误差不断被缩小,这正是算法是否稳定的实质。
通过上述几个问题的简单讨论,我们可以看出,即使有了数学模型,进一步甚至数学上已经有了完善的结果,但仍然存在能不能在计算机上解算和如何实现解算的问题。所以我们必须研究数值计算方法,寻求数学问题在计算机上的有效算法。
习题一
1.下列各近似数的绝对误差限是最末位的的半个单位,试指出各近似数的绝对误差限及其有效数字位数。 x 1=-3. 105, x 2=0. 001, x 3=0. 100, x 4=253. 48, x 5=6⨯10,x 6=6000
32
2.用秦九韶法计算P(x)=2x+7x-9 在x=2处的值。
3.若a=1.1062, b=0.947是经四舍五入后得到的近似值,问a+b, a×b 有几位有效数字。
*
*
*
*
*
3
*
4.设下列近似数均为有效数字,试求各近似数的绝对误差、相对误差和有效数字的位数。
(1) 3580; (2)0.00476; (3) 0.1430×103; (4) 2958×10-2; (5) 5.85000 .
1
5.真空中自由落体运动距离s 与时间关系由公式s=gt 2确定,假定重力加速度g 是准确的,而对t 的测
2
量有±0.1秒的误差,证明当t 增加时,距离S 的绝对误差增加而相对误差却减少。 6.若1/4用精确值0.25来表示,问有多少位有效数字。
7.正方形的边长约为100cm ,应该怎样测量,才能使其面积的误差不超过1cm 2。