《数值稳定性和要注意的若干原则ppt课件.ppt》由会员分享,可在线阅读,更多相关《数值稳定性和要注意的若干原则ppt课件.ppt(26页珍藏版)》请在三一办公上搜索。
1、1.3 数值稳定性和要注意的若干原则,1.3.3 减少运算次数,1.3.2 避免有效数字的损失,1.3.1 数值方法的稳定性,1.3 数值稳定性和要注意的若干原则,学习目标:掌握数值运算中避免大误差产生的若干准则。,1.3.1 数值方法的稳定性,定义 1.6 对于某个数值计算方法,如果输入数据的误差在计算过程中迅速增长而得不到控制,则称该算法是数值不稳定的,否则是数值稳定的。,更准确地说,假设输入数据的误差为,经n次运算后计算结果的误差为EnCn (C为与n无关的常数)时,就说误差是线性增长,当Enkn (k1为与n无关的常数) 时,就说误差是指数增长,如果算法的误差增长是线性的,则该算法是数
2、值稳定的;如果算法的误差是指数增长的,则该算法是数值不稳定的显然,误差的线性增长是不可避免的,而指数增长是必须避免的,举例说明如下。,例1 计算数列,解 第一种方法是令p0=1,利用递推公式在五位数字计算机上可计算出,P1=0.33333100,P2=0.11111100,P3=0.3703610-1,P4=0.1234510-1,这里,1/3是用0.33333近似,误差限为,经n步计算后的近似结果的误差限为,所以,误差是线性增长的,从而算法是稳定的,第二种方法是令p0=1, p1=1/3,利用递推公式,误差是指数增长的,从而算法是不稳定的,当然,数值不稳定的方法一般在实际计算中不能采用。数值
3、不稳定的现象属于误差危害现象。下面讨论误差危害现象的其他表现及如何避免问题。,1.用递推关系进行计算时设法控制误差的传播,用递推关系进行计算时必须注意误差的积累.,1.3.2 避免有效数字的损失的措施,例2 计算积分值,解 由于要计算系列的积分值,我们先推导 In 的一个递推公式。由,可得下面两个递推算法。,算法 1 :,算法 2 :,逆向递推公式,如果我们用四位数字计算,得 I0的近似值为,对算法 1,有,这个数已经大大超过了I6的大小,所以I6*连一位有效数字也没有了,误差掩盖了真值。,按以上初始值I0的取法有,事实上,这样,我们得到,错误的原因?,将 的误差扩大到5倍。,递推公式,对算法
4、 2,有,如果我们能够给出I6的一个近似值,则可由算法2计算I6的近似值.并且,即使I6较大,得到的近似值的误差将较小.由于,可取Ik的一个近似值为,对 k=6有,按I0=0.1832和I6=0.0262, 分别按算法1和2计算,计算结果如表 1-1 ,用递推关系进行计算时必须注意误差的积累.,其中In(1) 为算法1的计算值, In(2)为算法2的计算值。易知,对于任何自然数n,都有0In1,并且In单调递减。可见,算法1是不稳定的,算法2是稳定的。,在数值计算中,参加运算的数有时数量级相差很大,而计算机位数有限,如不注意,“小数”的作用可能消失,即出现“大数”吃“小数”的现象。,防止“大数
5、”吃“小数”,例 用三位十进制数字计算,可见,计算的次序会产生很大的影响。这是因为用计算机计算时,在运算中要“对阶”,对阶引起了大数吃小数的现象。大数吃小数在有些情况下是允许的,但有些情况下则造成谬误。在数值计算中,两个相近数相减会使有效数字严重损失。,解方法:自左至右逐个相加,因为在三位计算机上计算,所以后面所有的i都会被舍掉,得,方法2:先将所有的i相加,再与101相加,这时,例 求实系数二次方程 的根,其中,解 考虑两种解法。,算法 1:,算法2:,其中sgn表示取数的符号,即,防止两接近的数相减,对算法1,若 b24ac,则是不稳定的,否则是稳定的。,这是因为前一种情况的分子有一个相近
6、数相减,会大量损失有效数字,从而有一个结果的误差很大。算法2不存在这个问题,在任何情况下都是稳定的。因此称算法1是条件稳定的,算法2是无条件稳定的。,例如,对于方程,用4位有效数字计算,结果如下:,算法1:,算法2:,所以算法1不稳定,舍入误差对x2的影响大。,准确解是,这里,遇到两相近数相减的情形,可通过变换计算公式来避免或减少有效数字的损失。例如,我们有如下的变换公式:,如果无法改变算法,则采用增加有效位数进行计算,或在计算上采用双精度运算但这要增加机器计算的时间和多占内存单元。,4.减少运算次数,在数值计算中,要注意简化计算步骤,减少运算次数,这也是数值分析所要研究的重要内容。同样一个计
7、算问题,如果能减少运算次数,不但可以节省计算机的计算时间,还能减少误差的积累。下面举例说明简化计算公式的重要性。,例5 给定x,计算多项式的值,解 考虑两种算法,算法:先求,才能得到一个多项式的值,算法:如果我们将多项式写成下面的形式,则只需n次乘法和n次加法即可得到一个多项式的值,这就是著名的秦九韶算法,可描述为,即为要计算的多项式的值,显然,第二种算法比第一种算法的计算次数大大减少,它不仅能够节省机器计算时间,而且有利于防止误差积累,例,计算ln2.,算法1.利用级数,若要精确到 105,要计算10万项求和。这一方面计算量很大,另一方面舍入误差的积累也十分严重。,算法2.利用级数,取x=1/3,则只要计算前9项,截断误差便小于1010.,.避免小除数、大乘数,因为,如果前式中|x1|很大或后式中|x2|0 ,计算结果的绝对误差可能很大.,第一章小结,了解数值分析的研究对象与特点; 了解误差来源与分类,会求有效数字; 会简单误差估计; 了解误差的定性分析及避免误差危害。,