1、第一章第一章误误引例引例差差例例1:y=arctan5430 arctan5429的准确值为的准确值为:0.0000000339219?0.339?10 7但是但是,用具有用具有八位舍入功能八位舍入功能的计算器直接计算得的计算器直接计算得y?1.5706122 1.5706121=0.0000001=1?10 7所得计算结果的可靠性值得怀疑所得计算结果的可靠性值得怀疑.这一结果的产这一结果的产生是由于生是由于四舍五入四舍五入造成的造成的.例例2:计算下面积分的值计算下面积分的值(n=0,1,2,):In?11nxe0 x e dx.?积分积分In的值必定落在区间的值必定落在区间0,1内内,我们
2、由被积函我们由被积函数及其图形作出判断数及其图形作出判断.由分部积分法可得由分部积分法可得:x1?1nIn?e0 x de?1nx 1?11n?1x?e x e|0?e0nxe dx?n=1,2,4,6,8,10,15?1?nIn?1(n?1,2,?).如果取如果取I0=1 e 1=0.63212056 (八位有效数字八位有效数字).利用递推公式进行计算得利用递推公式进行计算得:n In近似值近似值 n In近似值近似值 0 0.63212056 6 0.12680320 1 0.36787944 7 0.11237760 2 0.26424112 8 0.10097920 3 0.20727
3、664 9 0.091187200 4 0.17089344 10 0.088128000 5 0.14553280 11 0.030591000 n 12 13 14 15:In近似值近似值 0.63289603-7.2276483 102.18708-1531.8061 例例3:对于一元二次方程对于一元二次方程x2 (109+1)x+109=0有两个有两个精确精确的实根的实根:x1=109,x2=1.如果在有仅八位的浮点计算机上用求根公式如果在有仅八位的浮点计算机上用求根公式:2?b?b?4acx1,2?2a直接进行计算则得直接进行计算则得:x1=109,x2=0.其中的其中的x2=0明显
4、失真明显失真,这也是由于这也是由于舍入误差舍入误差造成的造成的.1 误差的来源误差的来源实际实际问题问题建立数建立数学模型学模型确定计确定计算方法算方法编程编程上机上机由抽象简由抽象简化产生的化产生的模型误差模型误差及参数的及参数的观测误差观测误差由计算方由计算方法本身产法本身产生的截断生的截断误差或称误差或称方法误差方法误差计算过计算过程中产程中产生的舍生的舍入误差入误差例如用级数例如用级数131517sin x?x?x?x?x?3!5!7!的前三项计算的前三项计算 sinx 的近似值的近似值,即取即取1315sin x?S5(x)?x?x?x3!5!则则截断误差截断误差为:为:1719R(
5、x)?sin x?S5(x)?x?x?7!9!由于计算机的字长有限由于计算机的字长有限,用用0.166667近似表示近似表示1/3!,就会产生就会产生舍入误差舍入误差.2 误差的概念误差的概念一、绝对误差与绝对误差限一、绝对误差与绝对误差限设设x*为准确值为准确值(也称为真值也称为真值)x 的一个近似值的一个近似值,则称则称xx*为近似值为近似值x*的的绝对误差绝对误差,简称为简称为误差误差,并记作并记作e(x*)=xx*。满足不等式满足不等式|e(x*)|=|xx*|?*的正数的正数?*称为近称为近似值似值x*的的绝对误差限绝对误差限,简称为简称为误差限误差限.在工程技术中常记作在工程技术中
6、常记作x=x*?*。例如例如,电压电压V=1002(V),V*=100(V)是是V的一个近的一个近似值似值,2(V)是是V*的一个误差限的一个误差限,即即|VV*|?2(V)二、相对误差与相对误差限二、相对误差与相对误差限对于两个数值对于两个数值x1=1002,x2=101近似值近似值x1*=100的绝对误差限的绝对误差限?*(x1*)=2是近似值是近似值x2*=10的绝对误差限的绝对误差限?*(x2*)=1的两倍的两倍.但是但是,近似值近似值100的偏差不超过的偏差不超过2,而近似值而近似值10的偏差不超过的偏差不超过1.哪个近似哪个近似值的精度好呢?值的精度好呢?一个近似值的精度不仅与绝对
7、误差的大小有关一个近似值的精度不仅与绝对误差的大小有关,还与精确值的大小有关还与精确值的大小有关.为此我们需要引入相对误差为此我们需要引入相对误差的概念的概念.设设x的近似值为的近似值为x*,则称则称x*的绝对误差的绝对误差e(x*)与精确与精确值值x的比值为近似值的比值为近似值x*的的相对误差相对误差,并记作并记作er(x*),e(x*)x?x*即即er(x*)?xx同样同样,由于精确值由于精确值x 经常是未知的经常是未知的,所以所以,需要另需要另外的近似表达形式外的近似表达形式.我们注意如下公式的推导我们注意如下公式的推导,e(x*)|较小时较小时,有有当当|x*e(x*)e(x*)e(x
8、*)(x*?x)?xx*xx*e(x*)2?2?e(x*)x*?x*?e(x*)x*1?e(x*)x*e(x*)2当当x*?x 时时,即即e(x*)?0 时时,上式是上式是x*的的同阶无穷小同阶无穷小,故可忽略不计故可忽略不计.e(x*)x?x*?通常将通常将er*(x*)?x*x*作为近似值作为近似值x*的的相对误差相对误差.满足不等式满足不等式e(x*)x?x*?|er(x*)|?|?|?rx*x*的正数的正数?r*称为近似值称为近似值x*的的相对误差限相对误差限.例如例如:x1=1002的近似值的近似值x1*=100的相对误差为的相对误差为?e(x)2?1|er(x1)|?|?|?2%x
9、1100而而x2=101的近似值的近似值x2*=10的相对误差为的相对误差为?e(x)1?2|er(x2)|?|?|?10%x210因此因此,从相对误差来讲近似值从相对误差来讲近似值x1*比比x2*的精度要好的精度要好.三、有效数字及其位数三、有效数字及其位数若近似值若近似值x*某位数数值的某位数数值的半个单位半个单位是其绝对误差是其绝对误差限限,而从该位数字到而从该位数字到x*的最左边的非零数值数位止的最左边的非零数值数位止,共共有有n位数位数,则我们称这个近似值则我们称这个近似值x*具有具有n位有效数字位有效数字.例如例如,?=3.141592,x*=3.14的绝对误差的绝对误差|e(x*
10、)|=0.00159?0.01?1/2,即即“4”所在的百分位的半个单位所在的百分位的半个单位0.01?1/2 是是x*的绝对误差限的绝对误差限,故故x*的最左边的非零位的最左边的非零位数数(个位个位)“3”到百分位到百分位“4”共有三位共有三位,所以所以x*=3.14具具有有3位有效数字位有效数字.有效数字位数越多有效数字位数越多,近似值的绝对误差和相对误近似值的绝对误差和相对误差就相对越小差就相对越小,反之亦然反之亦然.3 误差的传播规律误差的传播规律设设x1*,x2*分别为分别为x1,x2的近似值的近似值,函数值函数值y=f(x1,x2)的近似值用的近似值用y*=f(x1*,x2*)表示
11、表示.利用函数利用函数f(x1,x2)在点在点(x1*,x2*)处的二元泰勒展开公式处的二元泰勒展开公式,对对y*的绝对误差和的绝对误差和相对误差进行分析相对误差进行分析.当当x1*和和x2*的绝对误差都较小时的绝对误差都较小时,y y*=f(x1,x2)f(x1*,x2*)?fx(x1*,x2*)(x1?x1*)?fx(x1*,x2*)(x2?x2*)12近似值近似值y*的的绝对误差的近似表达式绝对误差的近似表达式 为为:e(y*)?fx(x1*,x2*)e(x1*)?fx(x1*,x2*)e(x2*).12在在y*的绝对误差近似表达式的两端除以的绝对误差近似表达式的两端除以y*,即可得即可
12、得到到y*的的相对误差的近似表达式相对误差的近似表达式:?e(x1)e(x2)?er(y)?fx(x1,x2)?fx(x1,x2)12y*y*?xx?1?2?fx(x1,x2)er(x1)?fx(x1,x2)er(x2)12y*y*这两个近似表达式给出了二元函数绝对误差和相对误这两个近似表达式给出了二元函数绝对误差和相对误差的差的传播规律传播规律.一般地讲一般地讲,我们比较注意二元运算中的我们比较注意二元运算中的相关问题相关问题,以下对加、减、乘、除四则运算进行讨论以下对加、减、乘、除四则运算进行讨论.加加,减法相关的误差公式减法相关的误差公式:设设f(x1,x2)=x1x2.?e(x1?x2
13、)?e(x1)?e(x2)?er(x1?1?x2)?21?x e(x)?x e(x)1r12 r2?x1?x2?1?2|e(x?x)|?|e(x)|?|e(x)|1?|e(x?x)|?|x e(x)|?|x e(x)|1r12r2?|x1?x2|?r?1?2乘法相关的误差公式乘法相关的误差公式:设设f(x1,x2)=x1x2.e(x x)?x e(x)?x e(x)e(x x)?e(x)?e(x)|e(x x)|?|e(x)|?|e(x)|e(x x)|?|e(x)|?|e(x)|?r?1?2?r?1?r?2?1?2?1?2?r?1?2?r?1?r?2?1?2?2?1?1?2除法相关的误差公式
14、除法相关的误差公式:x1设设f(x1,x2)=x2?x11x1?e(?)?e(x1)?2e(x2)x2x2x2x?e()?er(x1)?er(x2)xx1?|e()|?2(|x2e(x1)|?|x1e(x2)|)x|x2|?r?1?2?1?2x?|e()|?|er(x1)|?|er(x2)|x?r?1?2例例4:测得圆环的外径测得圆环的外径D1=100.05(cm),内径内径D2=50.1(cm),则其面积则其面积?22S?(D1?D2)4D2的近似值为的近似值为:?2?2S?D1?D2?(102?52)4475?58.905(cm2).4D1其中其中,D1*=10(cm),D2*=5(cm)
15、,且已知且已知|e(D1*)|0.05(cm),|e(D2*)|0.1(cm).由近似公式可得由近似公式可得S*的绝对误差限和相对误差限分的绝对误差限和相对误差限分别为:别为:?e(S*)?D1e(D1)?D2e(D2)22?2?(10?0.05?5?0.1)?0.5?1.5708(cm)2e(S*)1.5708?er(S*)?|?0.027?2.7%S*58.905圆环面积的近似值圆环面积的近似值S*=68.905(cm2)的绝对误差限的绝对误差限为为1.5708(cm2),相对误差限为相对误差限为2.7%.4 数值运算中应注意的几个原则数值运算中应注意的几个原则一、选用数值稳定性好的算法一
16、、选用数值稳定性好的算法再来看例再来看例2的积分问题的积分问题:?11n xIn?e?0 x e dx(n?0,1,2,?)由递推公式由递推公式In=1 n In 1(n=1,2,)可得可得In-In*=(-1)n n!(I0-I0*)(n=1,2,)由由n!惊人的发散速度惊人的发散速度,只要只要|I0 I0*|?0,无论多小无论多小,则则In In*就会无限地增大就会无限地增大.如前面计算的结果如前面计算的结果.我们说我们说这个算法不是好算法这个算法不是好算法.如果我们将递推公式转换为如果我们将递推公式转换为:1In?1?(1?In)(n?N,N?1,?,1,0)n进行如下实验进行如下实验:
17、取取N=20,IN=10,则计算结果为则计算结果为:n 20 19 18 17 16 15 14 In近似值近似值 10-0.45 0.076315789 0.051315789 0.055804954 0.059012190 0.062732521 n 13 12 11 10 9 8 7 In近似值近似值 0.066947677 0.071773256 0.077352229 0.083877070 0.091612293 0.100931970 0.11238350 n In近似值近似值 6 0.12680236 5 0.14553294 4 0.17089341 3 0.20727665
18、 2 0.26424112 1 0.36787944 0 0.63212056 二、相近两数避免相减二、相近两数避免相减当当x1*和和x2*两数相近时两数相近时,y*=x1*x2*就会很小就会很小(即即y*?0),由两数差的相对误差估计式由两数差的相对误差估计式:1?|er(y*)|?(|x1er(x1)|?|x2er(x2)|)|y*|可以看出可以看出|er*(y*)|可能会很大可能会很大,导致导致y*有效数字减少有效数字减少.引例引例1 计算失真的原因就在于此计算失真的原因就在于此.若将计算公式进若将计算公式进行变换行变换,就可能避免这种情况的发生就可能避免这种情况的发生.我们来看下面的计
19、算过程我们来看下面的计算过程:?arctan?arctan?arctan,由于由于1?y?arctan5430?arctan5429则则11?arctan?arctan1?5430?542929479471-8?3.3921911?10这个计算结果是令人满意的这个计算结果是令人满意的.避免相近两数相减的方法随算式和条件的不同而避免相近两数相减的方法随算式和条件的不同而各异各异.例如例如:当当x 0 时时,1x?1?x?.x?1?x当当|x|很小时很小时,x1?cos x?2sin2121nxe?1?x?x?x2!n!等等等等.当然在无法改变算式的情况时当然在无法改变算式的情况时,可以考虑增加可
20、以考虑增加计算过程中的有效数字的位数计算过程中的有效数字的位数.2三、警惕大数三、警惕大数“吃吃”小数造成的危害小数造成的危害由于计算机的字长是有限的由于计算机的字长是有限的,对绝对值相差悬殊对绝对值相差悬殊的两个数进行运算时的两个数进行运算时,可能出现大数可能出现大数“吃掉吃掉”小数现小数现象象,从而影响结果的可靠性从而影响结果的可靠性.在例在例3的方程的方程x2 (109+1)x+109=0 中中b=109+1=1000000001=0.10000000 01?1010或或b=0.1000000000?1010+0.000000001?1010若使用尾数八位的浮点计算机时若使用尾数八位的浮
21、点计算机时,两结果的最后两结果的最后9两位两位“01”必然消失必然消失,其计算的结果均为其计算的结果均为:b=:10,9即大数即大数10“吃掉吃掉”了小数了小数 1.同样同样b?4ac?10?4?10=:109999910?1010?109?10,x2?:?0于是于是x1?:22根根x2=0不能令人满意不能令人满意.如果先利用公式如果先利用公式:?b?b2?4acb?0?2ax1?2?b?b?4ac?b?0?2a求出一个绝对值较大的根求出一个绝对值较大的根x1,然后利用公式然后利用公式x1x2=c/a求求出另外一个根出另外一个根x2,就可以保证所得到的一元二次方程就可以保证所得到的一元二次方程
22、2 ax+bx+c=0 的两个根的精度都是可靠的的两个根的精度都是可靠的.2189四、绝对值相对较小的数不宜作除数四、绝对值相对较小的数不宜作除数由两数之比的绝对误差限和相对误差限的估计式由两数之比的绝对误差限和相对误差限的估计式?x11?|e(?)|?2(|x2e(x1)|?|x1e(x2)|)x2|x2|?11?x1?|er(?)|?|er(x1)|?|er(x2)|x2|x1|x2|可以看出可以看出,当当x2趋于趋于0时时,比值的绝对误差有可能趋于比值的绝对误差有可能趋于.这就是这就是绝对值相对较小的数不宜作除数绝对值相对较小的数不宜作除数 的原因的原因.在在后面我们将看到相关的例子后面
23、我们将看到相关的例子.五、简化计算步骤五、简化计算步骤,减少运算次数减少运算次数应用这一原则应用这一原则,既可以既可以提高解题效率提高解题效率、节省计算节省计算时间时间,又可以又可以减少计算误差的积累减少计算误差的积累.这不仅是数值计算中必须注意的原则这不仅是数值计算中必须注意的原则,也是数值也是数值计算方法需要计算方法需要研究的重要内容研究的重要内容之一之一.在在数理统计数理统计中有一个重要且常用公式中有一个重要且常用公式:nn12?(xi?x)其中其中x?xini?1i?1i?1?(xi?x)?nn2nn12222222?xi?2nx?nx?xi?nx?xi?(?xi).ni?1i?1i?
24、1i?1ni?12(xi?2xix?x)?2ni?1n2xi?2?xix?xi?1i?1nn2在计算平均值在计算平均值x时很大可能会有舍入误差时很大可能会有舍入误差.如果直接用公式如果直接用公式?(xi?x)作计算作计算,则将则将x产生产生的误差作减法再平方之后的误差作减法再平方之后,又作了又作了n 次加法运算次加法运算,使这使这个个带误差的量带误差的量作了作了3 n 次运算次运算.122如果使用公式如果使用公式?xi?(?xi)作计算作计算,则没有使则没有使n用可能产生的误差的量用可能产生的误差的量x,而仅作了一次除法运算而仅作了一次除法运算.后者可能产生的总误差明显好于前者可能产生后者可能
25、产生的总误差明显好于前者可能产生的总误差的总误差.在数值计算中应引起我们的高度重视在数值计算中应引起我们的高度重视.2小小结结误差分析是数值计算中一项重要的研究内容误差分析是数值计算中一项重要的研究内容.本本章的内容要求章的内容要求:1.理解误差的基本概念理解误差的基本概念.2.掌握误差传播规律的近似公式,特别是四则运掌握误差传播规律的近似公式,特别是四则运算中误差传播规律的相关公式算中误差传播规律的相关公式.3.掌握数值运算中应注意的五个原则掌握数值运算中应注意的五个原则.4.充分理解课堂上所介绍的有关例题和习题中的充分理解课堂上所介绍的有关例题和习题中的相关问题相关问题.作业作业:P10.2,4(1,3,5),5.