第一章 误差 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
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
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
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
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
5/25页 |
|