第一章 误差
221 问3.142,3.141,分别作为π的近似值各具有几位有效数字, 7
分析 利用有效数字的概念可直接得出。
解 π=3.141 592 65„
22记x=3.142,x=3.141,x=. 1237
由π- x=3.141 59„-3.142=-0.000 40„知 1
11,,34 ,,,,,,10||10x122
因而x具有4位有效数字。 1
由π- x=3.141 59„-3.141=-0.000 59„知 2
11,3,2 ,10,|,,x|,,10222
因而x具有3位有效数字。 2
22由π-=3.141 59 „-3.142 85„=-0.001 26„知 7
1221,3,2 ,10,|,,|,,10272
因而x具有3位有效数字。 3
2 已知近似数x*有两位有效数字,试求其相对误差限。 分析 本题显然应利用有效数字与相对误差的关系。 解 利用有效数字与相对误差的关系。这里n=2,a是1到9之间的数字。 1
xx|,*|11,n,1,2,1*x |,()|,,,10,,10,5%rxa|*|22,11
3 已知近似数的相对误差限为0.3%,问x*至少有几位有效数字, 分析 本题利用有效数字与相对误差的关系。 解 a是1到9间的数字。 1
3111,1,1* ,(x)0.3%,,,,10,,10r210002,102,(9,1)2(a,1)1设x*具有n位有效数字,令-n+1=-1,则n=2,从而x*至少具有2位有效数字。
4 计算sin1.2,问要取几位有效数字才能保证相对误差限不大于0.01%。
分析 本题应利用有效数字与相对误差的关系。 解 设取n位有效数字,由sin1.2=0.93„,故a=9。 1
xx|,*|1,n,1,4*x ,()|,,,10,0.01%,10rxa|*|21
1n,,1,4,10,10解不等式知取n=4即可满足要求。 a21
11,5 计算,视已知数为精确值,用4位浮点数计算。 759760
1 / 25
-2-2-511解 0.131 8×10-0.131 6×10=0.2×10 ,,759760
结果只有一位有效数字,有效数字大量损失,造成相对误差的扩大,若通分后再计算:
1111,5 ,,,,0.1734,106759760759,7600.5768,10
就得到4位有效数字的结果。
此例说明,在数值计算中,要特别注意两相近数作减法运算时,有效数字常会严重损失,遇到这种情况,一般采取两种办法:第一,应多留几位有效数字;第二,将算式恒等变形,
1,cosx然后再进行计算。例如,当x接近于0,计算时,应先把算式变形为 sinx
21,cosx1,cosxsinx,, sinxsinx(1,cosx)1,cosx
再计算。又例如,当x充分大时,应作变换
11,x,x, 1,x,x
111,, xx,1x(x,1)
62,1.46 计算a,(2,1),取,采用下列算式计算:
1(1); 6(2,1)
99,702(2);
3(3)(3,22);
1(4). 3(3,22)
问哪一个得到的结果最好,
解 显然
66(2,1)(2,1)16a,(2,1),, 66(2,1)(2,1)
3632 ,,(2,1),(2,1),(3,22),99,702
1116(2,1),,, 3632(2,1)(3,22),,(2,1)
2,1.4所以(1)?(2)?(3)?(4),这4个算式是恒等的,但当取计算时,因为(2),(3)都涉及到两个相近数相减,使有效数字损失,而(1)在分母算式上的乘幂数比算式(4)
f(x)2,1.4大,所以算式(4)最好,事实上,当取时,有|?x|<>,再由的误差
,f(x,,x),f(x)|,|f(1.4)||,x|也可直接估计出每个算式的误差,显然,算式(4)误差最小。
2 / 25
具体计算可行:
1,3(1); ,5.2,106(2,1)
99,702,1.0(2)
3,33); ((3,22),8.0,10
1,3(4). ,5.1,103(3,22)
比较可得用第(4)个算式所得的结果更接近于a。
2997 求二次方程x-(10+1)x+10=0的根。
2999解 由于x-(10+1)x+10=(x-10)(x-1),所以方程的两个根分别为
9 x=10,x=1 122但如果应用一般二次方程ax+bx+c=0的求根公式:
2bb4ac,,, x,1,22a
22|b|,b,4ac由于当遇到b>>4|ac|的情形时,有,则用上述公式求出的两个根中,总有一个因用了两个相近的近似数相减而严重不可靠,如本例若在能将规格化的数表示到小
91010数点后8位的计算机上进行计算,则-b=10+1=0.1×10+0.000 000 0001×10,由于第二项最后两位数“01”在机器上表示不出来,故它在上式的计算中不起作用,即在计算机运算时,
9-b=10.
通过类似的分析可得
92b,4ac,|b|,10
所以,求得的两个根分别为
299,b,b,4ac10,109 x,,,1012a2
299,b,b,4ac10,10 x,,,022a2
显然,根x是严重失真的。 2
c为了求得可靠的结果,可以利用根与系数的关系式:xx,,在计算机上采用如下12a
公式:
2bsgn(b)b4ac,,, x,12a
cx, 2ax1
其中,sgn(b)是b的符号函数,当b?0时sgn(b)=1;当b<>时,sgn(b)=-1。显然,上述求根公式避免了相近数相减的可能性。
8 当N充分大时,如何计算
N,11I,dx ,N1,x
1分析 函数的原函数已知,我们自然考虑用Newton-Leibniz公式求这个定积分21,x
3 / 25
的值。由于N很大,这样会遇到两个相近的数相减,因此,应采用一些变换公式来避免这种情况。
解 若用定积分的Newton-Leibniz公式计算此题,有N,11,则当N充分大时,因为arctan(N+1)和arctanN,arctan(N,1),arctanN2,N1,x
非常接近,两者相减会使有效数字严重损失,从而影响计算结果的精度,这在数值计算中是要尽量避免的,但是通过变换计算公式,例如:令tanθ=N+1, tanθ=N,则由12
,,tan,tanN,1,N121,,,得 tan(,),,,121,tan,tan,1,(N,1)N1,(N,1)N12
1,,arctan(N,1),arctanN,arctan,, 121,(N,1)N
就可以避免两相近数相减引起的有效数字损失,从而得到较精确的结果。所以,当N充分
N,111,arctan大时,用计算积分的值较好。 22,N1,x1,N,N
1nx,19 计算积分. I,xedx(n,1,2,?n,0
分析 数值计算中应采用数值稳定的算法,因此在建立算法时,应首先考虑它的稳定性。
解 利用分部积分法,有
11111nx,nx,nx,x,n,n,x,1111111 xedx,xde,xe,enxdx,1,nxedx|,,,,00000
得递推公式:
(1) IInIn,,,(1,2,)nn,1
110x,1,,, Ixedx1 0,0e
*利用公式(1)计算I,由于初值I有误差,不妨设求I的近似值时有大小为ε的误差,In000
即
, I,I,,00
则由递推公式(1)得
,,I,I,I,I,I,,,I,, 0110
,, I,I,2I,I,2I,2,,I,2!,1221
,, I,I,3I,I,3I,3,2!,,I,3!,2332
,, I,I,4I,I,4I,4,3!,,I,4!,3443
?
,n I,I,(,1)n!,nn
显然初始数据的误差ε是按n!的倍数增长的,误差传播得快,例如当n=10时,10~?3.629
6,,×10,,这表明I时已把初始误差ε扩大了很多倍,从而的误差已把I|I,I|,10!,I1010101010
4 / 25
的真值淹没掉了,计算结果完全失真。
但如果递推公式(1)改成
1 I,(I,I)(n,k,k,1,?3,2)n,1nn
1于是,在从后往前计算时,I的误差减少为原来的,所以,若取n足够大,误并逐步减小,nn
显然,计算的结果是可靠的。所以,在构造或选择一种算法时,必须考虑到它的数值稳定性问题,数值不稳定的算法是不能使用的。
10 为了使计算
364y,10,,, 23x,1(x,1)(x,1)
的乘除法运算次数尽量地少,应将表达式改写为怎样的形式,
1t,,y,10,(3,(4,6t)t)t. 解 设x,1
在数值计算中,应注意简化运算步骤,减少运算次数,使计算量尽可能小。
11若x*=3587.64是x的具有六位有效数字的近似值,求x的绝对误差限。
7012为使的近似值的相对误差小于0.1,问查开方表时,要取几位有效数字,
13利用四位数学用表求x=1-cos2?的近似值,采用下面等式计算:
(1)1-cos2?
2(2)2sin1?
问哪一个结果较好,
2783,27.98214求方程x-56x+1=0的两个根,使它至少具有四位有效数字(已知)。
,15数列满足递推公式 {x},0n
x,10x,1(n,1,2,?)nn,1
x2,1.41若取(三位有效数字),问按上述递推公式,从x计算到x时误差有多大,这0010个计算过程稳定吗,
,n,1m,1,2,16如果近似值x,,(a,a,10,a,10,?,a,10),10的相对误差限小123n
1,n,1,10于,证明:这个数具有n位有效数字。 a2(,1)1
5 / 25
联系客服