内容来源
数值分析第五版 清华大学出版社
误差的来源与分类
数值分析只研究用数值方法求解数学模型产生的误差
模型误差
用计算机解决科学计算问题首先要建立数学模型,它是对被描述的实际问题进行抽象、简化而得到的,因而是近似的。
我们把数学模型与实际问题之间出现的这种误差称为模型误差。
由于这种误差难以用数量表示,通常都假定数学模型是合理的,这种误差可忽略不计,在“数值分析”中不予讨论。
观测误差
数学模型中往往还有一些根据观测得到的物理量,如温度、长度、电压等,这些参量显然也包含误差。
这种由观测产生的误差称为观测误差,在“数值分析”也不讨论这种误差。
截断误差(也称方法误差)
当数学模型不能得到精确解时,通常要用数值方法求它的近似解,其近似解与精确解之间的误差称为截断误差或方法误差。
例如,可微函数 f ( x ) f(x) f(x) 用 T a y l o r T a y l o r TaylorTaylor TaylorTaylor 多项式
P n ( x ) = f ( 0 ) + f ′ ( 0 ) 1 ! x + f ′ ′ ( 0 ) 2 ! x 2 + ⋯ + f ( n ) ( 0 ) n ! x n P_n(x)=f(0)+\frac{f'(0)}{1!}x+\frac{f''(0)}{2!}x^2 +\cdots+\frac{f^{(n)}(0)}{n!}x^n Pn(x)=f(0)+1!f′(0)x+2!f′′(0)x2+⋯+n!f(n)(0)xn
近似代替,则数值方法的截断误差是
R n ( x ) = f ( x ) − P n ( x ) = f n + 1 ( ξ ) ( n + 1 ) ! x n + 1 , ξ 在 0 与 x 之间 R_n(x)=f(x)-P_n(x)=\frac{f^{n+1}(\xi)}{(n+1)!}x^{n+1},\xi在0与x之间 Rn(x)=f(x)−Pn(x)=(n+1)!fn+1(ξ)xn+1,ξ在0与x之间
舍入误差
用计算机做数值计算时,由于计算机的字长有限,原始数据在计算机上表示时会产生误差,计算过程又可能产生新的误差,这种误差称为舍入误差。
误差与有效数字
绝对误差
设 x x x 为准确值, x ∗ x^* x∗ 为 x x x 的一个近似值,称 e ∗ = x ∗ − x e^*=x^*-x e∗=x∗−x 为近似值的绝对,简称误差
误差限
通常我们不能算出准确值 x x x ,也不能算出误差 e ∗ e^* e∗ 的准确值,只能根据测量工具或计算情况估计出误差的绝对值不超过某正数 ε ∗ \varepsilon^* ε∗ ,也就是误差绝对值的一个上界
相对误差
我们把近似值的误差 e ∗ e^* e∗ 与准确值 x x x 的比值
e ∗ x = x ∗ − x x \frac{e^*}{x}=\frac{x^*-x}{x} xe∗=xx∗−x
称为近似值 x ∗ x^* x∗ 的相对误差,记作 e r ∗ e^*_r er∗
在实际计算中,由于真值 x x x 总是不知道的,通常取
e r ∗ = e ∗ x ∗ = x ∗ − x x ∗ e^*_r=\frac{e^*}{x^*}=\frac{x^*-x}{x^*} er∗=x∗e∗=x∗x∗−x
作为 x ∗ x^* x∗ 的相对误差,条件是 e r ∗ = e ∗ x ∗ e^*_r=\frac{e^*}{x^*} er∗=x∗e∗ 较小,此时
e ∗ x − e ∗ x ∗ = e ∗ ( x ∗ − x ) x ∗ x = ( e ∗ ) 2 x ∗ ( x ∗ − e ∗ ) = ( e ∗ / x ∗ ) 2 1 − ( e ∗ / x ∗ ) \frac{e^*}{x}-\frac{e^*}{x^*}=\frac{e^*(x^*-x)}{x^*x}= \frac{(e^*)^2}{x^*(x^*-e^*)}=\frac{(e^*/x^*)^2}{1-(e^*/x^*)} xe∗−x∗e∗=x∗xe∗(x∗−x)=x∗(x∗−e∗)(e∗)2=1−(e∗/x∗)(e∗/x∗)2
是 e r ∗ e^*_r er∗ 的平方项级,故可忽略不计
相对误差限
相对误差也可正可负,它的绝对值上界叫做相对误差限,记作 ε r ∗ \varepsilon^*_r εr∗ ,即 ε r ∗ = ε ∗ ∣ x ∗ ∣ \varepsilon^*_r=\frac{\varepsilon^*}{|x^*|} εr∗=∣x∗∣ε∗
相对误差与相对误差限是无量纲的,而误差与误差限是有量纲的
有效数字
若近似值 x ∗ x^* x∗ 的误差限是某一位的半个单位,该为到 x ∗ x^* x∗ 的第一位非零数字共有 n n n 位,就说 x ∗ x^* x∗ 有 n n n 位有效数字。它可表示为
x ∗ = ± 1 0 m × ( a 1 + a 2 × 1 0 − 1 + ⋯ + a n × 1 0 − ( n − 1 ) ) x^*=\pm10^m\times(a_1+a_2\times10^{-1}+\cdots+a_n\times10^{-(n-1)}) x∗=±10m×(a1+a2×10−1+⋯+an×10−(n−1))
上式就是科学计数法
其中 a i ( i = 1 , 2 , ⋯ , n ) a_i(i=1,2,\cdots,n) ai(i=1,2,⋯,n) 是 0 0 0 到 9 9 9 中的一个数字, a 1 ≠ 0 a_1\neq0 a1=0 , m m m 为整数,且
绝对误差限为
∣ x − x ∗ ∣ ⩽ 1 2 × 1 0 m − n + 1 |x-x^*|\leqslant\frac{1}{2}\times10^{m-n+1} ∣x−x∗∣⩽21×10m−n+1
相对误差限为
ε r ∗ ⩽ 1 2 a 1 × 1 0 − ( n − 1 ) \varepsilon^*_r\leqslant\frac{1}{2a_1}\times10^{-(n-1)} εr∗⩽2a11×10−(n−1)
数值运算的误差估计
加减乘除
设两个近似数 x 1 ∗ x^*_1 x1∗ 与 x 2 ∗ x^*_2 x2∗ 的误差限分别为 ε ( x 1 ∗ ) \varepsilon(x^*_1) ε(x1∗) 和 ε ( x 2 ∗ ) \varepsilon(x^*_2) ε(x2∗) ,则它们进行加、减、乘、除运算得到的误差限分别满足不等式
ε ( x 1 ∗ ± x 2 ∗ ) ⩽ ε ( x 1 ∗ ) + ε ( x 2 ∗ ) ε ( x 1 ∗ x 2 ∗ ) ⩽ ∣ x 1 ∗ ∣ ε ( x 2 ∗ ) + ∣ x 2 ∗ ∣ ε ( x 1 ∗ ) ε ( x 1 ∗ / x 2 ∗ ) ⩽ ∣ x 1 ∗ ∣ ε ( x 2 ∗ ) + ∣ x 2 ∗ ∣ ε ( x 1 ∗ ) ∣ x 2 ∗ ∣ 2 , x 2 ∗ ≠ 0 \varepsilon(x^*_1\pm x^*_2)\leqslant \varepsilon(x^*_1)+\varepsilon(x^*_2)\\ \varepsilon(x^*_1x^*_2)\leqslant |x^*_1|\varepsilon(x^*_2)+|x^*_2|\varepsilon(x^*_1)\\ \varepsilon(x^*_1/x^*_2)\leqslant \frac{|x^*_1|\varepsilon(x^*_2)+|x^*_2|\varepsilon(x^*_1)} {|x^*_2|^2},x^*_2\neq 0 ε(x1∗±x2∗)⩽ε(x1∗)+ε(x2∗)ε(x1∗x2∗)⩽∣x1∗∣ε(x2∗)+∣x2∗∣ε(x1∗)ε(x1∗/x2∗)⩽∣x2∗∣2∣x1∗∣ε(x2∗)+∣x2∗∣ε(x1∗),x2∗=0
函数运算
当自变量有误差时计算函数值也产生误差,其误差限可利用函数的 T a y l o r Taylor Taylor 展开式进行估计
设 f ( x ) f(x) f(x) 是一元可微函数, x x x 的近似值为 x ∗ x^* x∗ ,则
f ( x ) − f ( x ∗ ) = f ′ ( x ) ( x − x ∗ ) + f ′ ′ ( ξ ) 2 ( x − x ∗ ) 2 f(x)-f(x^*)=f'(x)(x-x^*)+\frac{f''(\xi)}{2}(x-x^*)^2 f(x)−f(x∗)=f′(x)(x−x∗)+2f′′(ξ)(x−x∗)2
取绝对值得
∣ f ( x ) − f ( x ∗ ) ∣ = ∣ f ′ ( x ) ∣ ε ( x ∗ ) + ∣ f ′ ′ ( ξ ) ∣ 2 ε 2 ( x ∗ ) |f(x)-f(x^*)|=|f'(x)|\varepsilon(x^*) +\frac{|f''(\xi)|}{2}\varepsilon^2(x^*) ∣f(x)−f(x∗)∣=∣f′(x)∣ε(x∗)+2∣f′′(ξ)∣ε2(x∗)
假定 f ′ ( x ∗ ) f'(x^*) f′(x∗) 与 f ′ ′ ( x ∗ ) f''(x^*) f′′(x∗) 的比值不太大,可忽略 ε ( x ∗ ) \varepsilon(x^*) ε(x∗) 的高阶项,得
这个忽略有些草率
ε ( f ( x ∗ ) ) ≈ ∣ f ′ ( x ∗ ) ∣ ε ( x ∗ ) \varepsilon(f(x^*))\approx|f'(x^*)|\varepsilon(x^*) ε(f(x∗))≈∣f′(x∗)∣ε(x∗)
同理,当 f f f 为多元函数时
ε ( f ∗ ) ≈ ∑ i = 1 n ∣ ∂ f ∂ x i ∗ ∣ ε ( x i ∗ ) \varepsilon(f^*)\approx\sum^n_{i=1} \bigg|\frac{\partial f}{\partial x^*_i}\bigg|\varepsilon(x^*_i) ε(f∗)≈i=1∑n ∂xi∗∂f ε(xi∗)