内容发布更新时间 : 2024/12/27 6:00:24星期一 下面是文章的全部内容请认真阅读。
x1?109, x2?1.
三.要注意计算步骤的简化,减少运算次数
计算公式决定计算步骤,计算步骤直接影响计算的速度和误差的积累。下面以计算多项式的值为例来说明简化计算公式的重要性。
例: 计算多项式 P(x)?anxn?an?1xn?1???a0 的值。
分析:若直接计算,计算akxk这一项需进行k次乘法运算,共需
1n(n?1)次乘法运算和n次加法运算,若将公式改写成嵌套形式: 2P(x)?(?((anx?an?1)x?an?2)x??a1)x?a0
则只要计算n次乘法运算和n次加法运算。
四.要避免做被除数的绝对值远远大于除数绝对值的除法
1.直观认识:用绝对值很小的数去除绝对值很大的数,得到的结果更大,可能上溢,也会增大原有误差,或者使之后的运算有更大的舍入误差,将产生错误结果。
2.算式分析: |dr(1)|?|dln(1)|?xx2xx2xx2e(x1)e(x2). ?|x1||x2|可以看出,如果|x2|很小,则|dr(1)|将很大.
?0.0001x1?x2?13.例子说明:求解二元一次方程组?x1?x2?2?(1) (2)分析:(2)?(1)?1,得 0.00019998 9999 ?9999x2??9998?x2?带入方程组可解得x1?10000. 9999而在尾数是3位十进制浮点数字系统中运算,结果将是:
?10000x2??10000,
进一步解得:x2?1,。 x1?0(不满足(2)式)
出现错误的原因:用0.0001作除数增大了参与运算的数,也就增大了舍入误差的量级,从而淹没了真解。
令(1)?(2)?0.0001,仍在上述浮点系统中运算,得x2?1(这时舍入误差10?4大小),进而求得x1?1,这很理想。
五.选用数值稳定的计算公式
1.例子说明:计算 In?e?1?0xnexdx,n?1,2,….
分析:由分部积分可以得到In的递推公式:
x?1nn?1x?1In??xnex?1dx??xndex?1?xnex?1|1?edx?1?nx0??edx
000011111?1?nIn?1,n?1,2,…. I0?e?1?edx?1?e01x?1*, ?0.6321?I0(注:这里取k=7,用4位小数计算,由Taylor公式:
e?1?1?(?1)?(?1)2/2!???(?1)k/(k!)?0.3679 )
*用递推公式可以逐个算出近似值In,但当计算到I8*时有:I8*??0.728,
但从In?e?1?10*xnexdx知In都应该为正,I8?0显然错误。
**原因:主要是初值I0有误差:E0?I0?I0,使以后的计算各步都有*误差En?In?In,而后一步的误差与前一步的误差有关系式:
En??nEn?1?(?1)n(n!)E0,n?1,2,?,
**这就是说初值I0有误差E0,In的误差En就增大到n!倍。误差限
?*(E0)??10?4??*(E8)?(8!)?*(E8)?2.
12 上面的计算中,误差是积累增加的,计算过程中舍入误差不断增长的计算公式称为数值不稳定的。
改进方法:选用舍入误差不增长的计算公式,也就是数值稳定的计算公式,直接从积分可以退出
e?11?In?, n?1n?1(证: In?1?nIn?(n?1)In?1?In??11n1; n?1e?1In?e?xdx? )
0n?1取n?9,有
e?11 ?I9?
1010粗略估计可取
11e?1 I9?(?)?0.0684.
21010*又知In?1?(1?In),n?9,8,?,1. 可以算得I0与I0的误差不超过10?4。因
1n为|E0|?1*|En|,也就是说计算过程中误差是逐渐缩小的,尽管I9的误n!*差E9较大,用这种方法计算所得到的I0的近似效果却很好。
总 结
本章给出了误差、相对误差和有效数字的概念,讨论了误差的来源以及计算中误差传播的情况,并依据经验提出了几种减少误差避免错误结果应该采取的措施,指出选用数值稳定的算法的重要性。
部分习题解答
4.若1/4用0.25来表示,问有多少位有效数字?
解答:无穷多位。因为1/4=0.25000000??.
5.若a=1.1062,b=0.947是经过舍入后得到的近似值,问:a+b,ab各有几位有效
数字?
11 解:a?0.11062?101有5位有效数字,其误差: da??101?5??10?4;
221 b?0.974?100有3位有效数字,其误差: db??10?3.
211 (a?b)的误差:d(a?b)?da?db??10?2(??10m?n),说明a+b可以
22精确到小数点后两位,因此可以断定a+b有3位有效数字。
1?10 另外,a?b?2.0532?0.20532,知m?1,m?n??2?n?3,也可以
直接算出a+b有效数字位数n=3.
111 同理,dab?adb?bda?1.1062??10?3?0.947??10?4??1.2?10?3
22211??10?2??10m?n 22 又 ab?0.104757?101,知m=1,m-n=-2,所以n=3. 6.设y1?0.9863,求1/y1和1/y2的计y2?0.0062是经过舍入后得到的近似值。
算值与真值的相对误差限及y1y2和真值的相对误差限。 解:dr(111)?|dln()|?|?dlny1|?dry1,即,与y1有相同的相对误差限。y1y1y11)?dry2.又y1?0.9863有四位有效数字,即n=4,所以 y2111)?dry1??10?(n?1)??10?(4?1)?0.56?10?4; y12?12?9同理有:dr( dr( 而y2?0.0062?0.62?10?2有两位有效数字,即n=2,有 dr(111)?dry2??10?(n?1)??10?(2?1)?0.83?10?2; y22?12?6 dr(y1y2)?dry1?dry2?0.56?10?4?0.83?10?2?0.84?10?2。
7.正方形的边长约为100cm,应该怎样测量,才能使其面积的误差不超过1cm2。 解:设边长x,面积s?x2,依题意满足:|ds|?|2xdx|?1,知x?100cm,所以|dx|?|ds|1??0.005cm,即,只要边长的测量误差不超过0.005cm,2x2?100正方形的面积测量误差就不会超过1cm2.
8.用观测恒星的方法求得某地维度是45?0'2\.试问:计算sin?将有多大误差? 解:思路如下:将??45?0'2\化为弧度数,再用dsin??(sin?)'d?计算即可。
12gt,g精确而测量t有?0.1s的误差,证明:t增加2时,距离的绝对误差增加而相对误差减小。
dsgtdt2 解: ds?gtdt, drs???dt, 所以,当|dt|固定时,|ds|随t的
s1gt2t29.真空中自由落体运动s?增加而增大,|drs|随t的增加而减小。
10.设x?0,x的相对误差为?,求lnx的绝对误差。 解:d(lnx)?drx??.
11.设x的相对误差为?%,求xn的相对误差。
解:由题设知:|drx|??%,根据一元函数误差传播公式:
f'(x)?xdrf(x)?()drx,
f(x) 可得
xdrx|?|ndrx|?n?%。 nx12.计算球的体积,为了使相对误差限为1%,问度量半径R时允许的相对误差限如何?
|dr(xn)|?|nxn?1f'(R)4?R243RdrR|?|RdrR|?3drR?1%,从解:V?f(R)??R, drV?|43f(R)?R33而可解得drR?
1. 300