资源预览内容
第1页 / 共26页
第2页 / 共26页
第3页 / 共26页
第4页 / 共26页
第5页 / 共26页
第6页 / 共26页
第7页 / 共26页
第8页 / 共26页
第9页 / 共26页
第10页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第一章第一章1.3 数值稳定性和要注意的若干原则数值稳定性和要注意的若干原则1.3.3 减少运算次数减少运算次数1.3.2 避免有效数字的损失避免有效数字的损失1.3.1 数值方法的稳定性数值方法的稳定性第一章第一章1.3 数值稳定性和要注数值稳定性和要注意的若干原则意的若干原则学习目标:学习目标:掌握数值运算中避免大误掌握数值运算中避免大误差产生的若干准则。差产生的若干准则。第一章第一章1.3.1 数值方法的稳定性数值方法的稳定性 定义定义 1.6 对于某个数值计算方法,如果输入对于某个数值计算方法,如果输入数据的误差在计算过程中迅速增长而得不到控制,数据的误差在计算过程中迅速增长而得不到控制,则称该算法是则称该算法是数值不稳定数值不稳定的,否则是的,否则是数值稳定数值稳定的。的。更准确地说,假设输入数据的误差为更准确地说,假设输入数据的误差为 ,经,经n次运算次运算后计算结果的误差为后计算结果的误差为En Cn (C为与为与n无关的常数无关的常数)时,就说误差是线性增长时,就说误差是线性增长,当当En kn (k1为与为与n无关无关的常数的常数) 时,就说误差是指数增长时,就说误差是指数增长第一章第一章如果算法的误差增长是线性的,则该算法如果算法的误差增长是线性的,则该算法是数值稳定的;如果算法的误差是指数增长的,是数值稳定的;如果算法的误差是指数增长的,则该算法是数值不稳定的显然,误差的线性则该算法是数值不稳定的显然,误差的线性增长是不可避免的,而指数增长是必须避免的增长是不可避免的,而指数增长是必须避免的举例说明如下。举例说明如下。第一章第一章例例1 1 计算数列计算数列解解 第一种方法是令第一种方法是令p0=1,利用递推公式利用递推公式在五位数字计算机上可计算出在五位数字计算机上可计算出P1=0.33333 100P2=0.11111 100P3=0.37036 10-1P4=0.12345 10-1这里这里,1/3是用是用0.33333近似,误差限为近似,误差限为第一章第一章经经n步计算后的近似结果的误差限为步计算后的近似结果的误差限为所以,误差是线性增长的,从而算法是稳定的所以,误差是线性增长的,从而算法是稳定的第二种方法是令第二种方法是令p0=1, p1=1/3,利用递推公式利用递推公式误差是指数增长的,从而算法是不稳定的误差是指数增长的,从而算法是不稳定的第一章第一章 当然,数值不稳定的方法一般在实际计算中不能当然,数值不稳定的方法一般在实际计算中不能采用。数值不稳定的现象属于误差危害现象。下面讨采用。数值不稳定的现象属于误差危害现象。下面讨论误差危害现象的其他表现及如何避免问题。论误差危害现象的其他表现及如何避免问题。1.用递推关系进行计算时设法控制误差的传播用递推关系进行计算时设法控制误差的传播用递推关系进行计算时必须注意误差的积累用递推关系进行计算时必须注意误差的积累.1.3.2 1.3.2 避免有效数字的损失的措施避免有效数字的损失的措施第一章第一章例例2 2 计算积分值计算积分值解解 由于要计算系列的积分值,我们先推导由于要计算系列的积分值,我们先推导 In 的一个递推公式。由的一个递推公式。由可得下面两个递推算法。可得下面两个递推算法。第一章第一章算法算法 1 :算法算法 2 :逆向递推逆向递推公式公式如果我们用四位数字计算,得如果我们用四位数字计算,得 I0的近似值为的近似值为 第一章第一章对算法对算法 1,有,有这个数已经大大超过了这个数已经大大超过了I6的大小,所以的大小,所以I6*连一位有连一位有效数字也没有了,误差掩盖了真值。效数字也没有了,误差掩盖了真值。按以上初始值按以上初始值I0的取法有的取法有事实上事实上这样,我们得到这样,我们得到第一章第一章错误的原因?错误的原因?将将 的误差扩大到的误差扩大到5 5倍。倍。 递推公式递推公式第一章第一章对算法对算法 2,有,有如果我们能够给出如果我们能够给出I6的一个近似值的一个近似值,则可由算法则可由算法2计算计算I6的的近似值近似值.并且并且,即使即使I6较大较大,得到的近似值的误差将较小得到的近似值的误差将较小.由由于于可取可取Ik的一个近似值为的一个近似值为对对 k=6有有按按I0=0.1832和和I6=0.0262, 分别按算法分别按算法1和和2计算,计算结果如表计算,计算结果如表 1-1 第一章第一章 (四位)(四位)表表 1 - 1用递推关系进行计算时必须注意误差的积累用递推关系进行计算时必须注意误差的积累.其中其中In(1) 为算法为算法1的计算值,的计算值, In(2)为算法为算法2的计算的计算值。易知,对于任何自然数值。易知,对于任何自然数n,都有,都有0In4ac,则是不稳定的,否则是稳,则是不稳定的,否则是稳定的。定的。这是因为前一种情况的分子有一个相近数相减,会这是因为前一种情况的分子有一个相近数相减,会大量损失有效数字,从而有一个结果的误差很大。大量损失有效数字,从而有一个结果的误差很大。算法算法2不存在这个问题,在任何情况下都是稳定的。不存在这个问题,在任何情况下都是稳定的。因此称算法因此称算法1是条件稳定的,算法是条件稳定的,算法2是无条件稳定的是无条件稳定的。第一章第一章例如,对于方程例如,对于方程用用4位有效数字计算,结果如下:位有效数字计算,结果如下:算法算法1:算法算法2:所以算法所以算法1 1不稳定,舍入误差对不稳定,舍入误差对x2的影响大。的影响大。准确解是准确解是这里这里第一章第一章 遇到两相近数相减的情形,可通过变换计算公式来避免遇到两相近数相减的情形,可通过变换计算公式来避免或减少有效数字的损失。例如,我们有如下的变换公式:或减少有效数字的损失。例如,我们有如下的变换公式:如果无法改变算法,则采用增加有效位数进行计算,或在如果无法改变算法,则采用增加有效位数进行计算,或在计算上采用双精度运算但这要增加机器计算的时间和多占计算上采用双精度运算但这要增加机器计算的时间和多占内存单元。内存单元。第一章第一章 4.4.减少运算次数减少运算次数 在数值计算中,要注意简化计算步骤,减在数值计算中,要注意简化计算步骤,减少运算次数,这也是数值分析所要研究的重要内容。少运算次数,这也是数值分析所要研究的重要内容。同样一个计算问题,如果能减少运算次数,不但可同样一个计算问题,如果能减少运算次数,不但可以节省计算机的计算时间,还能减少误差的积累。以节省计算机的计算时间,还能减少误差的积累。下面举例说明简化计算公式的重要性。下面举例说明简化计算公式的重要性。例例5 5 给定给定x,计算多项式的值,计算多项式的值第一章第一章解解 考虑两种算法考虑两种算法算法:先求算法:先求才能得到一个多项式的值才能得到一个多项式的值算法:如果我们将多项式写成下面的形式算法:如果我们将多项式写成下面的形式则只需则只需n次乘法和次乘法和n次加法即可得到一个多项式的值,次加法即可得到一个多项式的值,这就是著名的这就是著名的秦九韶算法,秦九韶算法,可描述为可描述为第一章第一章即为要计算的多项式的值即为要计算的多项式的值显然,第二种算法比第一种算法的计算次数大大显然,第二种算法比第一种算法的计算次数大大减少,它不仅能够节省机器计算时间,而且有利减少,它不仅能够节省机器计算时间,而且有利于防止误差积累于防止误差积累第一章第一章例例计算计算ln2.算法算法1.利用级数利用级数若要精确到若要精确到 10 5,要计算,要计算10万项求和。这一方面万项求和。这一方面计算量很大,另一方面舍入误差的积累也十分严计算量很大,另一方面舍入误差的积累也十分严重。重。算法算法2.利用级数利用级数取取x=1/3,则只要计算前则只要计算前9项,截断误差便小于项,截断误差便小于10 10.第一章第一章.避免小除数、大乘数避免小除数、大乘数因为因为如果前式中如果前式中|x1|很大或后式中很大或后式中|x2| 0 ,计算结果,计算结果的绝对误差可能很大的绝对误差可能很大.第一章第一章第一章小结第一章小结了解数值分析的研究对象与特点;了解数值分析的研究对象与特点; 了解误差来源与分类了解误差来源与分类,会求有效数字会求有效数字; 会简单误差估计;会简单误差估计; 了解误差的定性分析及避免误差危害。了解误差的定性分析及避免误差危害。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号