《病态问题与条件数名师编辑PPT课件.ppt》由会员分享,可在线阅读,更多相关《病态问题与条件数名师编辑PPT课件.ppt(20页珍藏版)》请在优知文库上搜索。
1、 1.3.1 1.3.1 病态问题与条件数病态问题与条件数 对一个数值问题本身对一个数值问题本身,如果输入数据有微小扰动(即误如果输入数据有微小扰动(即误差),引起输出数据(即问题解)相对误差很大,这就是差),引起输出数据(即问题解)相对误差很大,这就是病病态问题态问题.例如计算函数值例如计算函数值 时,时,)(xf若若 有扰动有扰动 ,其,其x*xxx相对误差为相对误差为 ,xx函数值函数值 的相对误差为的相对误差为*)(xf.)(*)()(xfxfxf1.3 1.3 误差定性分析与避免误差危害误差定性分析与避免误差危害 ,)()(/)(*)()(pCxfxfxxxxfxfxf(3.13.1
2、)称为计算函数值问题的称为计算函数值问题的条件数条件数.pC相对误差比值相对误差比值 自变量相对误差一般不会太大,如果条件数自变量相对误差一般不会太大,如果条件数 很大,很大,pC将引起函数值相对误差很大,出现这种情况的问题就是将引起函数值相对误差很大,出现这种情况的问题就是病态病态问题问题.例如,例如,nxxf)(它表示相对误差可能放大它表示相对误差可能放大 倍倍.n 如如 ,10 n有有 ,24.1)02.1(,1)1(ff,02.1*x 自变量相对误差为自变量相对误差为 ,%2函数值相对误差为函数值相对误差为 ,%24 一般情况下一般情况下,条件数条件数 就认为是病态,就认为是病态,越大
3、越大病态越严重病态越严重.10pCpC则有则有)()(xfxfxCp,1nxnxxnn,1x若取若取这时问题可以认为是病态的这时问题可以认为是病态的.其他计算问题也要分析是否病态其他计算问题也要分析是否病态.例如解线性方程组,如果输入数据有微小误差引起解例如解线性方程组,如果输入数据有微小误差引起解的巨大误差,就认为是病态方程组,第的巨大误差,就认为是病态方程组,第5 5章将用矩阵的条件章将用矩阵的条件数来分析这种现象数来分析这种现象.1.3.2 1.3.2 算法的数值稳定性算法的数值稳定性 用一个算法进行计算,如果初始数据误差在计算中传播用一个算法进行计算,如果初始数据误差在计算中传播使计算
4、结果的误差增长很快,这个算法就是使计算结果的误差增长很快,这个算法就是数值不稳定数值不稳定的的.计算计算 并估计误差并估计误差.),1,0(dee101nxxIxnn 由分部积分可得计算由分部积分可得计算 的递推公式的递推公式 nI),2,1(11nnIInn若计算出若计算出 ,0I代入(代入(3.23.2),可逐次求出),可逐次求出 的值的值.,21II(3.23.2).e1dee11010 xIx例例6 6 而要算出而要算出 就要先计算就要先计算 .0I1e,!)1(!2)1()1(1e21kk并取并取 ,7k则得则得 ,3679.0e13679.0e17R计算过程中小数点后第计算过程中小
5、数点后第5 5位的数字按四舍五入原则舍入位的数字按四舍五入原则舍入.若用泰勒多项式展开部分和若用泰勒多项式展开部分和 用用4 4位小数计算,位小数计算,截断误差截断误差!81.10414 当初值取为当初值取为 时,用(时,用(3.23.2)递推)递推006321.0II).,2,1(1;6321.0)A(10nInIInn计算结果见表计算结果见表1-11-1的的 列列.nI 用用 近似近似 产生的误差产生的误差 就是初值误差,就是初值误差,0I0I000IIE它对后面计算结果是有影响的它对后面计算结果是有影响的.),2,1(11nnIInn(3.23.2).e1ee11010dxIx计算公式为
6、计算公式为 7.55290.170440.728080.207430.216070.264220.112060.367910.148050.63210计算)(A)(用计算)(A)(用11表nnInIn 从表中看到从表中看到 出现负值,出现负值,8I这与一切这与一切 相矛盾相矛盾.0nI101011demine1exxnnxx因此,当因此,当 较大时,用较大时,用 近似近似 显然是不正确的显然是不正确的.nnInI10101demaxexxnxx(3.33.3).11n实际上,由积分估值得实际上,由积分估值得nI 计算公式与每步计算都是正确的,计算结果错误的原因计算公式与每步计算都是正确的,计算
7、结果错误的原因主要就是初值主要就是初值 有误差有误差 ,由此引起以后各步,由此引起以后各步计算的误差计算的误差 满足关系满足关系 0I000IIEnnnIIE).,2,1(1nnEEnn 容易推得容易推得 ,!)1(0EnEnn这说明这说明 有误差有误差 ,则,则 就是就是 的的 倍误差倍误差.0I0EnI0E!n,10110e91I(3.33.3)111e1nInn 例如,例如,8n若若 ,401021E,2!808EE这就说明这就说明 完全不能近似完全不能近似 了了.8I8I 若换一种计算方案若换一种计算方案.由(由(3.33.3)取)取 ,9n,0684.010e10121919II取取
8、则则 它表明计算公式(它表明计算公式(A A)是数值不稳定的)是数值不稳定的.则则将公式将公式(3.2)(3.2)倒过来算,倒过来算,即由即由 算出算出 ,公式为,公式为*9I*1*7*8,III);1,8,9()1(1,0684.0)B(*1*9nInIInn计算结果见表计算结果见表1-11-1的的 列列.*nI0.06847.55290.17080.170440.10350.728080.20730.207430.11210.216070.26430.264220.12680.112060.36790.367910.14550.148050.63210.63210计算)(B)(用计算)(A
9、)(用计算)(B)(用计算)(A)(用11表*nn*nnIInIIn),2,1(11nnIInn(3.23.2).e1dee11010 xIx 反之,当用方案(反之,当用方案(A A)计算时,尽管初值)计算时,尽管初值 相当准确,相当准确,0I 此例说明,数值不稳定的算法是不能使用的此例说明,数值不稳定的算法是不能使用的.记记 ,*nnnIIE则则 ,*0!1nEnE比比 缩小了缩小了*0E*nE倍,因此,尽管倍,因此,尽管 较大,但由于误差逐步缩小,故可用较大,但由于误差逐步缩小,故可用 !n*9E近似近似 .*nInI由于误差传播是逐步扩大的,因而计算结果不可靠由于误差传播是逐步扩大的,因
10、而计算结果不可靠.可以看出可以看出 与与 的误差不超过的误差不超过 .*0I0I410).,2,1(1;6321.0)A(10nInIInn 一个算法如果输入数据有误差,而在计算过一个算法如果输入数据有误差,而在计算过程中舍入误差不增长,则称此算法是程中舍入误差不增长,则称此算法是数值稳定数值稳定的,否则称的,否则称此算法为此算法为不稳定不稳定的的.在例在例6 6中算法(中算法(B B)是数值稳定的,而算法()是数值稳定的,而算法(A A)是不)是不稳定的稳定的.定义定义4 4).,2,1(1;6321.0)A(10nInIInn);1,8,9()1(1,0684.0)B(*1*9nInIIn
11、n 1.3.3 1.3.3 避免误差危害的若干原则避免误差危害的若干原则 数值计算中首先要分清问题是否病态和算法是否数数值计算中首先要分清问题是否病态和算法是否数值稳定,计算时还应尽量避免误差危害,防止有效数字值稳定,计算时还应尽量避免误差危害,防止有效数字的损失,有下面若干原则的损失,有下面若干原则.1.1.要避免除数绝对值远远小于被除数绝对值的除法要避免除数绝对值远远小于被除数绝对值的除法 用绝对值小的数作除数舍入误差会增大,如计算用绝对值小的数作除数舍入误差会增大,如计算 若若 ,yx ,则可能对计算结果带来严重影响,应尽量避免则可能对计算结果带来严重影响,应尽量避免.,0 xy|)(|
12、)(|)(|1)()()(*2*2*yeyxxeyyyexyxeyxe 2.2.要避免两相近数相减要避免两相近数相减 在数值计算中两相近数相减有效数字会严重损失在数值计算中两相近数相减有效数字会严重损失.这说明必须尽量避免出现这类运算这说明必须尽量避免出现这类运算.最好是改变计算方最好是改变计算方法,防止这种现象产生法,防止这种现象产生.分析前述例分析前述例11000000.05706121.15706122.15429arctan5430arctan6个零个零 y8位有效数字位有效数字8位有效数字位有效数字 33921910000000.05429arctan5430arctan7个零个零
13、y0位有效数字位有效数字改变计算公式:改变计算公式:,可得,可得由由 1arctanarctanarctan8103921911.3294794711arctan5429arctan5430arctan 精度提高了很多。精度提高了很多。此例说明,可通过改变计算公式避免或减少有效数字此例说明,可通过改变计算公式避免或减少有效数字的损失的损失.类似地,如果类似地,如果 和和 很接近时,由很接近时,由 1x2x,lglglg2121xxxx用右边算式有效数字就不损失用右边算式有效数字就不损失.,111xxxx也应该用右端算式代替左端也应该用右端算式代替左端.当当 很大时,很大时,x 一般情况,当一般
14、情况,当 时,可用泰勒展开时,可用泰勒展开 *)()(xfxf 2*)(2*)(*)*)(*)()(xxxfxxxfxfxf取右端的有限项近似左端取右端的有限项近似左端.如果无法改变算式,则采用增加有效位数进行运算;如果无法改变算式,则采用增加有效位数进行运算;在计算机上则采用双倍字长运算,但这要增加机器计算时间在计算机上则采用双倍字长运算,但这要增加机器计算时间和多占内存单元和多占内存单元.3.3.要防止大数要防止大数“吃掉吃掉”小数小数 在数值运算中参加运算的数有时数量级相差很大,在数值运算中参加运算的数有时数量级相差很大,而计算机位数有限,如不注意运算次序就可能出现大数而计算机位数有限,
15、如不注意运算次序就可能出现大数“吃掉吃掉”小数的现象,影响计算结果的可靠性小数的现象,影响计算结果的可靠性.前面用求根公式求根的例前面用求根公式求根的例2中,中,吃掉了吃掉了1109现改变计算公式如下:现改变计算公式如下:12221/,0,240,24xacxbaacbbbaacbbx 4.4.注意简化计算步骤,减少运算次数注意简化计算步骤,减少运算次数 同样一个计算问题,如果能减少运算次数,不但可节同样一个计算问题,如果能减少运算次数,不但可节省计算机的计算时间,还能减少舍入误差省计算机的计算时间,还能减少舍入误差.这是数值计算必须遵从的原则,也是这是数值计算必须遵从的原则,也是“数值分析数值分析”要要研究的重要内容研究的重要内容.