1、数值计算方法第一章 误差的基本知识,第一章 误差的基本知识,1.0 误差的来源1.1 绝对误差、相对误差及有效数字1.2 数值计算的误差估计及算法稳定性1.3 数值计算中应注意的一些原则,第一章 误差的基本知识,1.0 误差的来源 (1) 观测误差:受测量工具本身精度的影响 (2) 模型误差:因简化和抽象,数学模型本身包含的误差 (3) 截断误差:近似解与精确解之间的误差,将数学模型转化为数值方法时产生 (4) 舍入误差:取有限位小数所引起的误差,例1 公式: 所产生的误差即截断误差 例2 R = - 3.14159 = 0.0000026. 所产生的误差即舍入误差注:(1) 疏忽大意造成的错
2、误不属于误差。 (2) 总假定:由实际问题建立的数学模型是合理的,参量也是足够精确的 (3) 主要讨论截断误差和舍入误差。,1.1 绝对误差、相对误差及有效数字1. 绝对误差与绝对误差限 定义3.1 设x为精确值,x*为x的近似值,称e = x* - x为近似值x*的绝对误差,简称误差,简记为e。注:e可正可负,很难求出(但往往知道|e|的范围:|e| ) 若|e| = | x* - x | (x*),则称(x*)为x*的绝对误差限,简称误差限,简记为。注:(1) 0 (2) x的范围:x* - x x* + ,工程上常记为:x = x* 。(知道误差限就可知道精确值的范围),例1:“四舍五入
3、”的绝对误差限 设x = 0.a1a2 anan+110m, 十进制标准表示式(a1 0)。 四舍五入: 此时,总有,2. 相对误差与相对误差限 绝对误差限不能完全表示近似程度的好坏,如x = 100 2,y = 10 1 定义3.2 称 为近似值x*的相对误差。 若 ,则称r为近似值x*的相对误差限。 注:(1) 由于 与 相差很少,而前者不易求得,故用后者代替前者。,(2) 绝对误差和绝对误差限有量纲,而相对误差和相对误差限无量纲,常用百分数表示。 仍然考虑:x = 100 2,y = 10 1: 即x* = 100,y*= 10的相对误差限分别是2%与10%,故x*近似x的程度比y*近似
4、y的程度好。 (3) 绝对误差限与相对误差限均不唯一(上限不唯一,越小越好)。,例2:设 = 3.14159265,按四舍五入取五位数字作为其近似值:x* = 3.1416,则e = x* - = 0.0000073,,3. 有效数字和有效数字位数 定义3.3 若x*的误差绝对值不超过某一位数的半个单位,而该位数字到x*的第1位(最左边)非零数字共有n位,则称x*有n位有效数字,这n个数字都称为有效数字。 如设x = = 3.14159265 取x* = 3.14,则|x* - x| = 0.00159265 0.005 =(绝对误差限)有效位3 取x* = 3.141,则|x* - x| =
5、 0.00059265 0.005 = 有效位3 取x* = 3.142,则|x* - x| = 0.0004073 0.0005 = 有效位4 注:上述做法其实就是通常的四舍五入法。,如何描述有效数字?(一般情况下在计算机中数往往规格化,故有必要考察规格化数。) 定义3.4 若x* = 10m 0.a1a2an(a1 0)是对x的第n+1位数字进行四舍五入后得到的近似值,即|x* - x| ,则x*具有n位有效数字。 注:(1) 称x*具有n位有效数字,即| x* - x| (2) 有效数字位数与小数点的位置无关(即上式中的m不起作用)。只有写成规格化数后,小数点后的数字位数才有用。 (3)
6、 4与4.0具有不同的有效数位。,例3:设准确值为x = 3.78695,分析近似值x1*= 3.7869, x2*= 3.7870分别具有几位有效数字。 解:|x1* - x| = 0.00005= (小数点后第4位),有效位5。 |x2* - x| = 0.00005= (小数点后第4位),有效位5。 (4) 一般来说,有效位数越多,其误差值越小,但也有例外。(误差相同,有效位不同,如下例) 例4:设x = 1000 ,它的两个近似值x1*=999.9和x2*=1000.1分别有3,4位有效数字。,4. 有效数字与相对误差间的关系 上面用绝对误差来描述了有效数位,下面考虑相对误差与有效数位
7、的关系。 命题 设x* = 10k 0.a1a2an(a1 0)是x的近似值 若x*具有n位有效数字,则其相对误差限满足:证明:因为| x*| 0.a1 10 k,且x*具有n位有效数字,所以 注:有效数位越多,则相对误差越小,反之亦然。,在实际应用中,为了要使取得的近似数的相对误差满足一定的要求,可以用命题中的不等式来确定所取得近似数应具有多少位有效数字。 例5:求 的近似值,使其相对误差不超过0.1%。 解:因为 ,设x*具有n位有效数字,则其相对误差满足:(命题)。满足此式有n = 4,故取x*= 2.449。,例6:确定圆周率的近似值 的绝对误差、相对误差及有效数位。 解:因为* =
8、= 3.141592920, = 3.141592653589793 所以,|* |=0.00000026,且 误差|e| = |* | 0.0000005= ,所以有7位有效数字。,1.2 数值计算的误差估计及算法稳定性1. 函数运算中的误差 当自变量有误差时,计算相应的函数值也会产生误差,其误差限可由泰勒展式估计。 (1) 设f具有二阶导函数,x*为x的近似值,则,1.2 数值计算的误差估计及算法稳定性1. 函数运算中的误差 (2) 若f是n元函数,有二阶连续偏导数,xi*为xi的近似值,i=1,2,n,则,1.2 数值计算的误差估计及算法稳定性1. 函数运算中的误差 (2) 若f是n元函
9、数,有二阶连续偏导数,xi*为xi的近似值,i=1,2,n,且,2. 四则运算中的误差 四则运算作为二元函数的特例: (1) 加减法:,2. 四则运算中的误差 四则运算作为二元函数的特例: (2) 乘法:,2. 四则运算中的误差 四则运算作为二元函数的特例: (3) 除法:,3. 浮点基本运算的误差 (1) 浮点数及其误差 二进实数:x = 2 0.12t 其中1 0 机器数: x* = 2 0.12t 符号 阶码 尾数尾数的长度由硬件决定 称fl(x) = x*为x的机器规格化浮点数,简称浮点数. 记 = 0.12t, * = 0.12t,则 x = 2 ,x* = 2 *,记 = 0.12
10、t, * = 0.12t,则 x = 2 ,x* = 2 *显然,| | | *| 0.1=2-1, 所以,误差(舍入):|e| = | x* x | = | fl(x) x | =2| *| 2 2-t = 2t 相对误差(舍入):,(2) 浮点数的四则运算 记fl(x)的相对舍入误差为 ,则fl(x) x = xx,|x| 2t+1. 由此得到浮点数四则运算产生的舍入误差为:fl(x y) = (x y) + (x y) 1,2=(x y)(1+ 1,2)fl(xy) = (xy)(1+ 3) | x | 2t+1 x=1,2,3,4.,例7 设x = 2101 0.101101,y =
11、211 0.111101,求fl(xy).解:显然t = 110(6位),10111=10 2|a2 b2|,即1/3 (a/b)2 3时,算法的相对误差较小,因此算法比算法在数值上更可靠,而当(a2 + b2) 2|a2 b2|时,算法比算法在数值上更可靠。例如:a = 0.3237,b = 0.3134,用4位有效数字计算a2 b2,可得如下结果:算法 a * a = 0.1048,b * b = 0.9822 101, (a * a) (b * b) = 0.66 102;算法 a +* b = 0.6371,a * b = 0.1030 101, (a +*a)(b *b) = 0.6
12、562 102。a2 b2的准确值是0.656213 102,可见算法比算法的结果可靠。而a/b = 0.3237/0.3134 = 1.032865.,满足1/3 (a/b)2 3,即由理论分析也知算法比算法的结果可靠。,1.3 数值计算中应注意的一些原则1. 选用稳定性好的算法,以控制误差的传播例:在4位有效数字的精度下求定积分的值: n = 0,1,2,100解:由于初值于是可建立递推公式,1. 选用稳定性好的算法,以控制误差的传播建立递推公式这是一个数值稳定性不好的算法,y0的舍入误差传播到y1时增大5倍,如此进行,传播到y100时将增大5100倍。,如果改变计算公式,先取一个yn的近
13、似值,用下面的公式(1.9)倒过来计算yn-1,yn-2,即:情况就不同了。我们发现Ik的误差减小到 后传给Ik-1,因而初值的误差对以后各步的计算结果的影响是随着n的增大而愈来愈小。,利用估计式取y100的近似值为按下式即可求出101个积分值:由于y100的误差在计算过程中的每一步都被乘以1/5,所以该算法是一个稳定算法。,对于一个稳定的计算过程,由于舍入误差不增大,因而不具体估计舍入误差也是可用的。而对于一个不稳定的计算过程,如计算步骤太多,就可能出现错误结果。因此,在实际应用中应选用数值稳定的算法,尽量避免使用数值不稳定的算法。,2. 防止大数吃小数 对位中 连加中的顺序: 如在5位机上
14、计算 . 52492=0.52492105,ai 0.9 = 0.000009105 = 0 应先计算 ,再与52492相加.,3. 避免相近两数相减 因为 有效数位会严重损失 如x = 1.232,y = 1.231,在4位机上计算:z = x3 y3 = (1.232)3 (1.231)3 = 0.1870 101 0.1865 101 = 0.5 102,至多1位有效数字,3. 避免相近两数相减改为:z = (x y)(x2 + xy + y2) = 0.1 102(0.1518 101 +0.1517 101+0.1515 101) = 0.455 102,此时将有3位有效数字因为x2
15、、xy、y2均为四舍五入所得,其绝对误差限为0.0005 = 0.5103,所以z = 0.455 102的绝对误差限为:z = 0.1 102(0.5103 + 0.5103 + 0.5103) = 0.15105 0.5105从而近似值0.455 102的三位数字4、5、5都是有效的。,注:改变减法的例子,4. 避免小数做除数和大数做乘数5. 防止出现机器零和溢出死机,6. 简化计算步骤,减少运算次数 如:x255 = xx2x4x8x16x32x64x128 又如:计算pn(x) = anxn+an-1xn-1+a1x+a0 改为: (秦九韶法)7. 其他 (1) 利用耗时少的运算 加比乘快,乘比除快 (2) 充分利用存储空间,