数值计算中的误差
(1)误差的基本概念
误差的基本概念
实际问题的精确解与数值计算所得的近似解之间的差别称为误差
误差来源
(1)模型误差
实际问题与数学模型之差
(2)观测误差
观测所的
(3)截断误差
近似导致
(4)舍入误差
机器字长限制
(2)绝对误差与相对误差与有效数字
绝对误差
e(x*)=x-x*
绝对误差限
|e(x*)|=x-x*
x*-
ε
⩽
\varepsilon\leqslant
ε⩽x
⩽
\leqslant
⩽x*+
ε
\varepsilon
ε
x=x*
±
ε
\plusmn\varepsilon
±ε
用毫米刻度尺的米尺测量一长度为x,如读出的长度为x*=765mm,qi绝对误差限为0.5mm
准确值x: 764.5mm ⩽ \leqslant ⩽x$\leqslant 765.5 m m x 765.5mm\\ x 765.5mmx ∈ \isin ∈[764.5mm,765.5mm]
x=765$\plusmn$0.5mm
相对误差
因为准确值x总是未知,所以一般取相对误差为:
e
r
(
x
∗
)
=
e
(
x
∗
)
x
∗
e_r(x^*)=\frac{e(x^*)}{x^*}
er(x∗)=x∗e(x∗)
相对误差限(限->取模)
| e r ( x ∗ ) e_r(x^*) er(x∗)|=| e ( x ∗ ) x ∗ \frac{e(x^*)}{x^*} x∗e(x∗)| ⩽ \leqslant ⩽ ε r \varepsilon_r εr
两种误差限的关系
ε
r
\varepsilon_r
εr=
ε
∣
x
∗
∣
\frac{\varepsilon}{|x^*|}
∣x∗∣ε
ε
\varepsilon
ε=|x^*|
ε
\varepsilon
ε
2 ≈ 1.414 \sqrt2\approx1.414 2≈1.414 (1.41421356237310)
是经过四舍五入得到的近似值,则
绝对误差限 ε \varepsilon ε= 1 2 ∗ 1 0 − 3 \frac{1}{2}*10^{-3} 21∗10−3
相对误差限 ε r = 0.5 ∗ 1 0 − 3 1.414 ≈ 0.035 \varepsilon_r=\frac{0.5*10^{-3}}{1.414}\approx0.035 εr=1.4140.5∗10−3≈0.035%
有效数字
2 = 1.41421356 \sqrt2=1.41421356 2=1.41421356
( ∣ x − x ∗ ∣ ⩽ 1 2 ∗ 1 0 − 3 ) (|x-x^*|\leqslant\frac{1}{2}*10^{-3}) (∣x−x∗∣⩽21∗10−3) x ∗ = 1.414 x^*=1.414 x∗=1.414—有效数字4个
( ∣ x − x ∗ ∣ ⩽ 1 2 ∗ 1 0 − 7 ) (|x-x*|\leqslant\frac{1}{2}*10^{-7}) (∣x−x∗∣⩽21∗10−7) x ∗ = 1.4142136 x^*=1.4142136 x∗=1.4142136—有效数字8个
x=0.005800 ± \plusmn ± 1 2 ∗ 1 0 − 6 \frac{1}{2}*10^{-6} 21∗10−6表示近似值
x ∗ = 0.005800 x^*=0.005800 x∗=0.005800准确到小数点后6位,有4位有效数字
2 \sqrt2 2=1.41421356237310……
x ∗ = 1.414213 x^*=1.414213 x∗=1.414213作为 2 \sqrt2 2d的近似值,有几位有效数字?∣ e ( x ∗ ) ∣ = ∣ x − x ∗ ∣ = 0.0000005623 … |e(x^*)|=|x-x^*|=0.0000005623… ∣e(x∗)∣=∣x−x∗∣=0.0000005623…< 1 2 ∗ 1 0 − 5 \frac{1}{2}*10^{-5} 21∗10−5
准确到小数点后5为,有6位有效数字
为使 2 \sqrt2 2的近似值的相对误差线小于0.1%,至少要取几位有效数字?
(用绝对误差限和有效数字的关系)
ε = ε r ∗ ∣ x ∣ < 20 ∗ 1 0 − 3 = 0.4 … ∗ 1 0 − 2 \varepsilon=\varepsilon_r*|x|<\sqrt{20}*10^{-3}=0.4…*10^{-2} ε=εr∗∣x∣<20∗10−3=0.4…∗10−2
0.5 ∗ 1 0 − 3 < 0.4 … ∗ 1 0 − 2 0.5*10^{-3}<0.4…*10^{-2} 0.5∗10−3<0.4…∗10−2
需要准确到小数点后第3位,有4位有效数字
x表示成规范模式*
定理一:若x的近似值x*= ± 0. a 1 a 2 a n ∗ 1 0 m ( a 1 / = 0 ) \plusmn0.a_1a_2a_n*10^m(a_1\mathrlap{\,/}{=}0) ±0.a1a2an∗10m(a1/=0)有n位有效数字,则 1 2 a 1 \frac{1}{2a_1} 2a11为其相对误差限。
反之,若 x ∗ x^* x∗的相对误差限 ε r \varepsilon_r εr满足 ε r ⩽ 1 2 ( a 1 + 1 ) ∗ 1 0 − n + 1 \varepsilon_r\leqslant\frac{1}{2(a_1+1)}*10^{-n+1} εr⩽2(a1+1)1∗10−n+1,则x至少有n位有效数字
实际上,使用的时候,通过绝对误差限中转
(3)数值计算中误差的传播
基本运算中的误差传播
用微分表示误差
Δ y ≈ d y = f ′ ( x ) d x \Delta{y}\approx{dy}=f\prime(x)dx Δy≈dy=f′(x)dx
绝对误差的传播
y = f ( x ) , 则 e ( y ∗ ) = f ( x ) − f ( x ∗ ) ≈ d f ( x ∗ ) = f ′ ( x ∗ ) e ( x ∗ ) y=f(x),则e(y^*)=f(x)-f(x^*)\approx{df(x^*)}=f\prime(x^*)e(x^*) y=f(x),则e(y∗)=f(x)−f(x∗)≈df(x∗)=f′(x∗)e(x∗)
ε ( y ∗ ) ⩽ ∣ f ′ ( x ∗ ) ∣ ε ( x ∗ ) \varepsilon(y^*)\leqslant|f\prime(x^*)|\varepsilon(x^*) ε(y∗)⩽∣f′(x∗)∣ε(x∗)
y = f ( x 1 , x 2 , … , x n ) , f y=f(x_1,x_2,…,x_n),f y=f(x1,x2,…,xn),f在点 ( x 1 ∗ , x 2 ∗ , … , x n ∗ ) (x_1^*,x_2^*,…,x_n^*) (x1∗,x2∗,…,xn∗)处可微, x i ∗ x_i^* xi∗为 x i x_i xi的近似值,则
相对误差的传播
(4)和差积商的误差公式
即和,差的绝对误差限不超过各数的绝对误差限之和
积,商的相对误差限不超过各数的相对误差限之和
(5)算法的数值稳定性
稳定性:在算法的计算过程中,舍入误差在计算过程中不增长,则称算法是数值稳定的,否则称算法是数值不稳定的
(6)数值计算中应注意的问题
- 避免两个相近的数相减
-
避免大数吃小数的现象
改变顺序,先对小的部分操作,就有可能最后不会被吃掉 -
避免除数的绝对值远小于被除数的绝对值
当|y|<<|x|时,舍入误差可能增大很多 -
要简化计算,减少运算次数,提高效率
秦九韶算法 -
选用数值稳定性好的算法