《数值稳定和要注意的若干原则》由会员分享,可在线阅读,更多相关《数值稳定和要注意的若干原则(12页珍藏版)》请在金锄头文库上搜索。
1、第一章第一章数值稳定和要注意的若干原则Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望第一章第一章1.3 数值稳定性和要数值稳定性和要注意的若干原则注意的若干原则学习目标:学习目标:掌握数值运算中避免大误掌握数值运算中避免大误差产生的若干准则。差产生的若干准则。第一章第一章 定义定义 1.4 对于某个数值计算方法,如果输入数据的误差在计算过对于某个数值计算方法,如果输入数据的误差在计算过程中迅速增长而得不到控制,则称该算法是程中迅速增长而得不到控制,则称该算法是数值不稳定数值不稳定的
2、,否则是的,否则是数数值稳定值稳定的。的。 举例说明如下。举例说明如下。例例1 计算积分值计算积分值解解 由于要计算系列的积分值,我们先推导由于要计算系列的积分值,我们先推导 的一个递推公式。的一个递推公式。由由1.3.1 数值方法的稳定性数值方法的稳定性第一章第一章可得下面两个递推算法。可得下面两个递推算法。算法算法 1 :算法算法 2 : 直接计算可得直接计算可得 如果我们用四位数字计算,得如果我们用四位数字计算,得 的近似的近似值为值为 。记。记 , 为为 的近似值。的近似值。对算法对算法 1,有,有按以上初始值按以上初始值 的取法有的取法有 ,事实上,事实上 。这样,我。这样,我们得到
3、们得到 。这个数已经大大超过了。这个数已经大大超过了 的大小,所以的大小,所以 连一连一位有效数字也没有了,误差掩盖了真值。位有效数字也没有了,误差掩盖了真值。逆向递推公式逆向递推公式第一章第一章对算法对算法 2,有,有 可取可取 的一个近似值为的一个近似值为 对对 有有 。 如果我们能够给出如果我们能够给出 的一个近似值的一个近似值, ,则可由算法则可由算法2 2计算计算 的近似值的近似值. .并且并且, ,即使即使 较大较大, ,得到的近似值的得到的近似值的误差将较小误差将较小. .由于由于第一章第一章 按按 和和 ,分别按算法,分别按算法1和和2计算,计算结果如表计算,计算结果如表 1-
4、1 ,其中,其中 为算法为算法1的计算值,的计算值, 为算法为算法2的计算值。易知,对于任何自的计算值。易知,对于任何自然数然数 ,都有,都有 ,并且,并且 单调递减。可见,算法单调递减。可见,算法1是不稳定的,算是不稳定的,算法法2是稳定的。是稳定的。 (四位)(四位)表表 1 - 1用递推关系进行计算时必须注意误差的积累用递推关系进行计算时必须注意误差的积累.第一章第一章 当然,数值不稳定的方法一般在实际计算中不能采用。数值不稳定的现当然,数值不稳定的方法一般在实际计算中不能采用。数值不稳定的现象属于误差危害现象。下面讨论误差危害现象的其他表现及如何避免问题。象属于误差危害现象。下面讨论误
5、差危害现象的其他表现及如何避免问题。1.3.2 避免有效数字的损失避免有效数字的损失在数值计算中,参加运算的数有时数量级相差很大,而计算机位数有限,在数值计算中,参加运算的数有时数量级相差很大,而计算机位数有限,如不注意,如不注意,“小数小数”的作用可能消失,即出现的作用可能消失,即出现“大数大数”吃吃“小数小数”的现象。的现象。例例2 用三位十进制数字计算用三位十进制数字计算其中其中 如果我们自左至右逐个相加,则所如果我们自左至右逐个相加,则所有的有的 都会被舍掉,得都会被舍掉,得 。但若把所有的。但若把所有的 先加起来,再与先加起来,再与101相加,就有相加,就有可见,计算的次序会产生很大
6、的影响。这是因为用计算机计算时,可见,计算的次序会产生很大的影响。这是因为用计算机计算时,在运算中要在运算中要“对阶对阶”,对阶引起了大数吃小数的现象。大数吃小数在,对阶引起了大数吃小数的现象。大数吃小数在有些情况下是允许的,但有些情况下则造成谬误。在数值计算中,两有些情况下是允许的,但有些情况下则造成谬误。在数值计算中,两个相近数相减会使有效数字严重损失。个相近数相减会使有效数字严重损失。第一章第一章 例例3 求实系数二次方程求实系数二次方程 的根,其中的根,其中 解解 考虑两种解法。考虑两种解法。 算法算法 1:算法算法2:其中其中sgn表示取数的符号,即表示取数的符号,即对算法对算法1,
7、若,若 ,则是不稳定的,否则是稳定的。这是因为前一种,则是不稳定的,否则是稳定的。这是因为前一种情况的分子有一个相近数相减,会大量损失有效数字,从而有一个结果的误差情况的分子有一个相近数相减,会大量损失有效数字,从而有一个结果的误差很大。算法很大。算法2不存在这个问题,在任何情况下都是稳定的。因此称算法不存在这个问题,在任何情况下都是稳定的。因此称算法1是条件是条件稳定的,算法稳定的,算法2是无条件稳定的是无条件稳定的。第一章第一章例如,对于方程例如,对于方程用用4位有效数字计算,结果如下位有效数字计算,结果如下:算法算法1:算法算法2:准确解是准确解是 。这里。这里 所以算法所以算法1不稳定
8、,舍入误差对不稳定,舍入误差对 的影响大。的影响大。遇到两相近数相减的情形,可通过变换计算公式来避免或减少有效数遇到两相近数相减的情形,可通过变换计算公式来避免或减少有效数字的损失。例如,我们有如下的变换公式:字的损失。例如,我们有如下的变换公式:第一章第一章如果无法改变算法,则采用增加有效位数进行计算,或在计算上采用双精如果无法改变算法,则采用增加有效位数进行计算,或在计算上采用双精度运算但这要增加机器计算的时间和多占内存单元。度运算但这要增加机器计算的时间和多占内存单元。 第一章第一章1.3.3 减少运算次数减少运算次数在数值计算中,要注意简化计算步骤,减少运算次数,这也是数值分析所在数值
9、计算中,要注意简化计算步骤,减少运算次数,这也是数值分析所要研究的重要内容。同样一个计算问题,如果能减少运算次数,不但可以节省要研究的重要内容。同样一个计算问题,如果能减少运算次数,不但可以节省计算机的计算时间,还能减少误差的积累。下面举例说明简化计算公式的重要计算机的计算时间,还能减少误差的积累。下面举例说明简化计算公式的重要性。性。的值。如果我们先求的值。如果我们先求 ,需要进行,需要进行k次乘法,在相加,则需要次乘法,在相加,则需要 次乘法和次乘法和n 次加法才能得到一个多项式的值。如果我们将多项式写成下面的次加法才能得到一个多项式的值。如果我们将多项式写成下面的形式形式 例例4 给定给定x,计算多项式,计算多项式则只需则只需n次乘法和次乘法和n次加法即可得到一个多项式的值,这就是著名的次加法即可得到一个多项式的值,这就是著名的秦九韶算法秦九韶算法,可描述为,可描述为最后有最后有第一章第一章例例5 利用级数利用级数计算计算 ,若要精确到,若要精确到 ,要计算,要计算10万项求和。这一方面计万项求和。这一方面计算量很大,另一方面舍入误差的积累也十分严重。算量很大,另一方面舍入误差的积累也十分严重。来计算来计算 ,取,取 ,则只要计算前,则只要计算前9项,截断误差便小项,截断误差便小于于 。 如果该用级数如果该用级数