§1.3数值稳定性和要注意的若干原则

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第一章绪论1.3数值稳定性和要注意的若干原则1.3.1数值方法的稳定性定义1.4对于某个数值计算方法,如果输入数据的误差在计算过程中迅速增长而得不到控制,则称该算法是数值不稳定的,否则是数值稳定的。举例说明如下。例1.6计算积分值106,,1,0,5。ndxxxInnnI解由于要计算系列的积分值,我们先推导的一个递推公式。由1010111,1555ndxxdxxxxIInnnnn第一章绪论可得下面两个递推算法。算法1:。6,,2,1,511nInInn。1,,5,6,1511nInInn算法2:0I直接计算可得如果我们用四位数字计算,得的近似值为。记,为的近似值。。5ln6ln0I1823.0*0I*nnnIIE*nInI对算法1,有。01)5(5EEEnnn按以上初始值的取法有,事实上。这样,我们得到。这个数已经大大超过了的大小,所以连一位有效数字也没有了,误差掩盖了真值。0I40105.0E401022.0E34.05066EE6I*6I第一章绪论对算法2,有。66051,51EEEEknnk可取的一个近似值为。)1(51)1(6121*kkIk对有。6k0262.0*1IkI如果我们能够给出的一个近似值,则可由算法2计算的近似值.并且,即使较大,得到的近似值的误差将较小.0,...4,56nI6E6I1010)1(5156)161kdxxIdxxkkkk(由于第一章绪论按和,分别按算法1和2计算,计算结果如表1-1,其中为算法1的计算值,为算法2的计算值。易知,对于任何自然数,都有,并且单调递减。可见,算法1是不稳定的,算法2是稳定的。1823.0*0I0262.0*6I)1(nI)2(nIn10nInI(四位)nI表1-1n)1(nI)2(nI00885.01823.01823.011823.00884.00884.020575.00580.00580.030458.00431.00431.040210.00344.00343.050950.00281.00285.063083.00262.00243.0第一章绪论当然,数值不稳定的方法一般在实际计算中不能采用。数值不稳定的现象属于误差危害现象。下面讨论误差危害现象的其他表现及如何避免问题。1.3.2避免有效数字的损失在数值计算中,参加运算的数有时数量级相差很大,而计算机位数有限,如不注意,“小数”的作用可能消失,即出现“大数”吃“小数”的现象。例1.7用三位十进制数字计算,10110021x其中如果我们自左至右逐个相加,则所有的都会被舍掉,得。但若把所有的先加起来,再与101相加,就有1414.01001011.0100101111xi。100,2,1,4.01.0ii101xi可见,计算的次序会产生很大的影响。这是因为用计算机计算时,在运算中要“对阶”,对阶引起了大数吃小数的现象。大数吃小数在有些情况下是允许的,但有些情况下则造成谬误。在数值计算中,两个相近数相减会使有效数字严重损失。第一章绪论例1.8求实系数二次方程的根,其中02cbxax。0,042abacb解考虑两种解法。算法1:aacbbx2422,1算法2:1221,24)(axcxaacbbsignbx其中sign表示取数的符号,即0101{)(bbbsign对算法1,若,则是不稳定的,否则是稳定的。这是因为前一种情况的分子有一个相近数相减,会大量损失有效数字,从而有一个结果的误差很大。算法2不存在这个问题,在任何情况下都是稳定的。因此称算法1是条件稳定的,算法2是无条件稳定的。acb42第一章绪论02000.0,08.6221xx例如,对于方程0000.110.622xx用4位有效数字计算,结果如下:算法1:算法2:01611.0,08.6221xx准确解是。这里所以算法1不稳定,舍入误差对的影响大。016107237.0,083892.6221xxacb422x遇到两相近数相减的情形,可通过变换计算公式来避免或减少有效数字的损失。例如,我们有如下的变换公式:第一章绪论xxxxxxxxxxxx111lglglgcos1sinsincos12121如果无法改变算法,则采用增加有效位数进行计算,或在计算上采用双精度运算但这要增加机器计算的时间和多占内存单元。第一章绪论1.3.3减少运算次数在数值计算中,要注意简化计算步骤,减少运算次数,这也是数值分析所要研究的重要内容。同样一个计算问题,如果能减少运算次数,不但可以节省计算机的计算时间,还能减少误差的积累。下面举例说明简化计算公式的重要性。的值。如果我们先求,需要进行k次乘法,在相加,则需要次乘法和n次加法才能得到一个多项式的值。如果我们将多项式写成下面的形式例1.9给定x,计算多项式011)(axaxaxPnnnnn2/)1(nnkkxa0121}])([{)(aaaaxaxxxxPnnnn则只需n次乘法和n次加法即可得到一个多项式的值,这就是著名的秦九韶算法,可描述为02,1{1nnkaxuuaukkknn最后有)(0xPun第一章绪论nxxnnn11)1()1ln(2ln例1.10利用级数计算,若要精确到,要计算10万项求和。这一方面计算量很大,另一方面舍入误差的积累也十分严重。510),)!12(12!55!33(211lnnnxxxxxx来计算,取,则只要计算前9项,截断误差便小于。2ln3/1x1010如果该用级数

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功