1数值分析林甲富linjiafu@sina.com2教材丁丽娟,程杞元,《数值计算方法》,高等教育出版社,2011年.3第一章数值计算中的误差§1.2误差的基本概念§1.3数值计算中误差的传播§1.4数值计算中应注意的问题§1.1数值计算的内容与特点4•数值分析是做什么用的?数值分析输入复杂问题或运算......),(,)(,,ln,,xfdxddxxfbxAxaxbax计算机近似解§1.1数值计算的内容与特点5研究对象那些在理论上有解而又无法手工计算的数学问题例解300阶的线性方程组求6阶矩阵的全部特征值6主要内容数值代数近似求解线性方程组(直接解法,迭代解法)矩阵特征值的计算数值逼近:插值法,函数逼近数值微分与数值积分微分方程近似求解:常微分方程数值解法非线性方程求解7§1.2误差的基本概念误差按来源可分为:模型误差观测误差截断误差舍入误差误差:精确解与近似解之间的差8模型误差数学模型通常是由实际问题抽象得到的,一般带有误差,这种误差称为模型误差.观测误差数学模型中包含的一些参数通常是通过观测和实验得到的,难免带有误差,这种误差称为观测误差.截断误差求解数学模型所用的数值方法通常是一种近似方法,这种因方法产生的误差称为截断误差或方法误差.9543251413121)1ln(xxxxxx实际计算时只能截取有限项代数和计算,如取前5项有:5141312112ln这里产生误差(记作R5)截断误差8171615R例如,利用ln(x+1)的Taylor公式计算ln2,10舍入误差由于计算机只能对有限位数进行,e原则保留有限位,这时产生的误差称为舍入误差。,231等都要按舍入运算,在运算中像在数值分析中,均假定数学模型是准确的,因而不考虑模型误差和观测误差,只讨论截断误差和舍入误差对计算结果的影响.11设x*是准确值x的一个近似值,记e=xx*称e为近似值x*的绝对误差,简称误差.绝对误差一般很难准确计算,但可以估计上界.绝对误差e0不唯一,当然e越小越具有参考价值.则称e为近似值x*的绝对误差限,简称误差限.若e满足e||e1.2.1绝对误差和相对误差12例用毫米刻度的米尺测量一长度x,如读出的长度是x*=765mm,由于误差限是0.5mm,故准确值].mm5.765,mm5.764[x精确值x,近似值x*和误差限e之间满足:通常记为ee**xxxe*xx13绝对误差有时并不能完全地反映近似值的好坏,如测量100m和10m两个长度,若它们的绝对误差都是1cm,显然前者的测量结果比后者的准确.因此,决定一个量的近似值的精确度,除了要看绝对误差外,还必须考虑该量本身的大小.14称er为近似值x*的相对误差.记,*xxxxeer由于x未知,实际使用时总是将x*的相对误差取为***xxxxeer.||rree相对误差称为近似值x*的相对误差限.|*|xree15例设x*=1.24是由精确值x经过四舍五入得到的近似值,求x*的绝对误差限和相对误差限.由已知可得:所以e=0.005,245.1235.1x%.4.024.1005.0re解一般地,凡是由准确值经过四舍五入得到的近似值,其绝对误差限等于该近似值末位的半个单位.16有位有效数字,精确到小数点后第位*若近似值x*满足则称x*准确到小数点后第n位.并把从第一个非零数字到这一位的所有数字均称为有效数字.,1021|*|nxx1415.3*......;8979321415926535.3例:问:有几位有效数字?*31050*.π||π解:431.2.2有效数字17数x*总可以写成如下形式.10.0*21mnaaaxx*作为x的近似值,具有n位有效数字当且仅当nmxx1021*其中m是整数,ai是0到9中的一个数字,.01a由此可见,近似值的有效数字越多,其绝对误差越小.有效数字的另一等价定义18故取n=6,即取6位有效数字.此时x*=1.41421.解则近似值x*可写为由于,414.12,10.0*121naaax.011a51101021*2nx令例为了使的近似值的绝对误差不大于10-5,问应取几位有效数字?2x19相对误差限与有效数字之间的关系.111211021...021010...01050nnmnnmra.aaa.a.x*εε有效数字相对误差限已知x*=0.a1a2…an×10m有n位有效数字,则其相对误差限为20nmmnmnr.aaa.aaxεxx105010)1()1(21010...0)1(210|*||*|11112111相对误差限有效数字1110)1(21nraε已知x*的相对误差限可写为则可见x*至少有n位有效数字.21基本运算中()的误差估计,105.0|414.12|3,105.0|236.25|3问?|414.1236.225|?236.2414.152§1.3数值计算中误差的传播如22例计算A=f(x1,x2).如果x1,x2的近似值为x1*,x2*,则A的近似值为A*=f(x1*,x2*),用多元函数微分近似公式可以得到*)(*)*,(*)(*)*,(*)(*)*,(*)(*)*,(*)*,(),(**)(2221112122221111212121xexxxfxexxxfxxxxxfxxxxxfxxfxxfAAAe绝对误差e运算可近似看成微分运算.23由此可以得到基本运算中()的误差估计,),()()(2121xexexxe和差的误差限不超过各数的误差限之和.|)(||)(||)(|2121xexexxe24)()()()()(212121211221xexexxxexxxxexxxerrr),()()(211221xexxexxxe|)(||)(||)(|2121xexexxerrr乘法相对误差限不超过各数相对误差限之和.25,)()(22211221xxexxexxxe).()()()(211222211221xexexxxxexxexxxerrr乘除相对误差限不超过各数相对误差限之和..|)(||)(|2121xexexxerrr26例设y=xn,求y的相对误差与x的相对误差之间的关系.解)()()(1xenxxeyenn)()()()()(1xnexxenxxenxyyeyernnr所以xn的相对误差是x的相对误差的n倍.x2的相对误差是x的相对误差的2倍,x的相对误差是x的相对误差的1/2倍.27算法的数值稳定性一种数值算法,如果其计算舍入误差积累是可控制的,则称其为数值稳定的,反之称为数值不稳定的.28101dxexIxnn利用分部积分法可得计算In的递推公式,2,11,1nnIInn例计算积分算法1:1010dxeIx,2,11,1nnIInn6321.0632120558.011e由此递推计算I1,I2,…,I9.解291,2,,8,9,)1(11nInInn10109919110110dxxIdxexe取近似值,0684.0)10110(2119eI由此计算I8,I7,…,I0.并将计算公式改写为算法2:此时10121||1*99eII.0316.030InI0I1I2I3I4I5I6I7I8I9算法10.63210.36790.26420.20740.17040.14800.11200.2160-0.72807.5520算法20.63210.36790.26420.20730.17090.14550.12680.11210.10350.0684真值0.63210.36790.26420.20730.17090.14550.12680.11240.10090.091631对任何n都应有In0,但算法1的计算结果显示I80,可见,虽然I0的近似误差不超过0.5×10-4,但随着计算步数的增加,误差明显增大.这说明算法1给出的递推公式是数值不稳定的.而对于算法2,虽然初始给出的I9没有一位有效数字,但算至I6已有4位有效数字.这说明算法2中误差随着计算过程的深入是逐步递减的,因而是数值稳定的.32和可得可见,随着计算步数的增加,误差迅速放大,使结果失真.11nnnII,1*1*nnnII,2,1n)(*11*nnnnIInII).(!)1(*00IInn由1010dxeIx,2,11,1nnIInn对于算法1:*6321.0101Ie101dxexIxnn例计算积分|*|362880|*|!9|*|000099IIIIII33算法2的计算公式为1,2,,1,,)1(11kknInInn类似地可得0,1,,1,,)(!!)1(**kknIIknIIkknknn,2,11,1nnIInn可见,近似误差是可控制的,算法是数值稳定的.*nnII101dxexIxnn例计算积分|*|3628801|*|!91|*|999900IIIIII34§1.4数值计算中应注意的问题如果x,y的近似值分别为x*,y*,则z*=x*-y*是z=x-y的近似值.此时,相对误差满足估计式,***)*(*)(yxyxezer可见,当x*与y*很接近时,z*的相对误差有可能很大.为了减少舍入误差的影响,设计算法时应遵循如下的一些原则.1.避免两个相近的数相减35时,当21xx例如时,当0x时,当1x在数值计算中,如果遇到两个相近的数相减,可考虑改变一下算法以避免两数相减.2121logloglogxxxx2sin2cos12xxxxxx11136例求方程x2-64x+1=0的两个根,使它们至少具有四位有效数字.984.311023由求根公式有984.631023321x,016.01023322x12/1xx对两个相近的数相减,若找不到适当方法代替,只能在计算机上采用双精度进行计算,以提高精度.解若由仅有两位有效数字,但若采用则有四位有效数字.,01563.0372.防止大数“吃掉”小数因为计算机上只能采用有限位数计算,若参加运算的数量级差很大,在它们的加、减运算中,绝对值很小的数往往被绝对值较大的数“吃掉”,造成计算结果失真.在求和或差的过程中应采用由小到大的运算过程.383.绝对值太小的数不宜作除数由于除数很小,将导致商很大,有可能出现“溢出”现象.另外,设x,y的近似值分别为x*,y*,则z*=x*/y*是z=x/y的近似值.此时,z*的绝对误差满足估计式)(ze2)()(yyexxey可见,若除数太小,则可能导致商的绝对误差很大.2)()(yyxexye394.注意简化计算程序,减少计算次数例用Cramer法则求n阶线性方程组Ax=b的解,用n阶行列式定义来计算36524360010!2610乘法运算次数(n+1)n!当n=25时,在每秒百亿次乘除运算计算机上求解时间为首先,若算法计算量太大,实际计算无法完成(亿年)1340其次,即使是可行算法,则计算量越大积累的误差也越大.因此,算法的计算量越小越好.0111...)(axaxaxaxpnnnnn若直接逐项计算,大约需要乘法运算次数为2)1(12...)1(nnnn例计算n次多项式:41一般地,对于n次多项式将它改写为021)()(