①采用等价无穷小代换的方法一般不可行。近似计算中,实际上影响计算的恰恰是无穷小量,虽然等价,但其差别可能恰恰是影响精度的因素。采用等价无穷小代换,可能只会得到精度水平比较低的结论。
例如
xx2sin22()21?cosx2?2?x ?xxx211cosxsinx?xcosx?cotx???xxsinxxsinxx?xcosx?(x?1,sinx?x)xsinx1?cosx ?sinx1?1?(x?1,cosx?1)sinx?0试与上例比较。
有时候这种方法可以使用,例如
??sinxsin?, 因为cos(x??)?cosxcos??0当??1时,cos??1,sin
cos(x??)?cosxcos??sinxsin??cosx?sinx??
在这个计算中,由于x是常数,x的函数值实际上放大了每一项的计算
结果,使得相近的数相减的问题不很突出。
而利用一阶的泰勒展开f(x??)?f(x)??f?(?)(x???x??),当??1时,就有f(x??)?f(x)??f?(x),因此
cos(x??)?cosx??sinx
和上面的结果一样。但显然,用泰勒展开的方法具有一般性并能得到精度更高的结果。
②采用洛必达法则也是不可以的。实际上,无论是等价无穷小还是洛必达法则都是极限方法,而近似计算是不能采用极限方法的。
③转化的结果要化简,比如化繁分式为简分式,但不能取极限。取极限就违背的了数值计算的本意。
所以, 11?x11?0????1?1?0 1?x1?x1?01?0
9
是错误的。
④极小的数做除数,实际上是
0型的不定型,要转化为非不定型。 010、用4位三角函数表,怎样算才能保证1?cos2?有较高的精度? 解:根据1?cos2??2sin21?,先查表求出sin1?再计算出要求的结果精度较高。
指出:
用度数就可以。不必化为弧度。
11、利用783?27.982求方程x2?56x?1?0的两个根,使它们至少具有4位有效数字。
解:
由方程的求根公式,本方程的根为
56?562?456?2282?1x1,2???28?783 22因为783?27.982,则
x1?28?783?28?27.982?55.982
如果直接根据求根公式计算第二个根,则因为两个相近的数相减会造成有效数字的减少,误差增大。因此
根据韦达定理x1x2?1,在求出x1?55.982后这样计算x2:
x2?11?=0.01786=0.1786?101 x155.982这样就保证了求出的根有四位有效数字。 12、试给出一种计算积分
1In?e近似值的稳定算法。
1?1nxx?edx(n?0,1,2,3,...), 0解:当n=0时,I0?e?1?x0exdx?e?1(e?1)?1?e?1。
011(?exdx?ex?e?1)。
00b对In运用分部积分法(?udv?uva??vdu)得
aabb 10
1In?e?1?xedx?e(xe01?1nx?1nx101n?1x?11?n?xedx)?e(e?0?n?xn?1exdx)
00?1?nen?1xx?edx?1?nIn?1 0由此得到带初值的递推关系式
?I0?1?e?1? ???In?1?nIn?1(n?1,2,3,...)由递推公式In=1-nIn-1 解得In?1?In的值作估计,有
11nx?111(1?In),这是逆向的递推公式,对nIn?e?1n?xedx?ee?xdx?001 n?1另有
11nx?1n?1xdx?e?0In?e?1?xedx?e01 n?1 (取e的指数为最小值0,将ex取作 e0 =1作为常数即可简化公式)。
11?In?则 e?1。 n?1n?1那么,我们可以取其上下限的平均值作为其近似值。即取
11In?(e?1?1)
2n?1可以看出,n越大,这个近似值越精确地接近于准确值。
(n越大,In的上限和下限就越接近,近似值区间的长度就越短,近似值和精确值就越接近)
111此时,en-1=In-1*-In-1=-(In*-In)= en,│e0│= │en│,计算是稳
nnn!定的。
实际上,如果我们要求I9,可以先求出I20,这样求出的I9的误差是比I20
的误差小得多的,而I20的误差本身也并不大。实际上,这样求出的I9比直接计算出来的精确得多。
补充题
1、给出数系F(10,4,-5,5)中的最大数、最小数和最小整数。 解:最大数:0.9999×105;
最小数:-0.9999×105; 最小正数:0.1000×10-5。
2、已知e?2.71828182845904523536028747?,求它在F(10,5,-5,5)
11
和F(10,8,-5,5)中的浮点数。
解:在F(10,5,-5,5)中,fl(e)?0.27183?101
在F(10,8,-5,5)中,fl(e)?0.27182818?101
3、已知数e的以下几个近似数,它们分别有几位有效数字?相对误差是多少?
x0?2.7182,x1?2.7183,x0?2.7182818。
分析:题目没有说明近似数是通过哪种途径取得的,也就没有明确每个近似数和准确数之间的误差关系。
所以,本题的解答应当从求近似数的误差开始。 解:因为
11e?x0?0.00008181??10?3??101?4,2211, e?x1?0.00002??10?4??101?5,2211e?x2?0.00000003??10?7??101?8.22所以,x0?2.7182,x1?2.7183,x0?2.7182818分别有4、5、8个有效数字。 其相对误差分别是
11?4?10e?x021er(x0)????10?3,x02.718241e?x1??10?4,41e?x2??10?74
(3?8)34、数与下述各式在实数的意义上是相等的, 3(3?8)(1)(17?68)3,(2)[(17?68)3]?1,(3)(3?8)6,(4)[(3?8)6]?1, (5)19601?69208,(6)(19601?69208)?1。
试说明在浮点数系F(10,4,?8,8)中,用那个公式计算出的结果误差最小。 分析:本题实际上是一个算法分析与设计问题,也就是说要应用算法设计的基本原则进行分析讨论。
12