误差
1. 误差的类型
- 实际问题转化为数学模型时产生的误差称为模型误差
- 在数学模型中观察数据产生的误差叫观察误差
以上两种误差我们在数值分析中不讨论,只研究求解数学模型产生的误差 - 截断误差(方法误差):在设计算法时近似处理寻求一些简化
- 舍入误差:计算机的字长是有限的,每一步运算需要四舍五入
计算机的浮点数系,如果采用 β \beta β进制,则浮点数表示为 x = ± ( d 1 β + d 2 β 2 + . . . + d t β t ) × β e x=\pm(\frac{d_1}{\beta}+\frac{d_2}{\beta^2}+...+\frac{d_t}{\beta^t})\times\beta^e x=±(βd1+β2d2+...+βtdt)×βe
其中 d 1 , d 2 , . . . , d t d_1,d_2,...,d_t d1,d2,...,dt为整数,且$0\le d_i\le \beta-1 $ ( i = 1 , 2 , . . . , t ) (i=1,2,...,t) (i=1,2,...,t)
β \beta β为浮点数的基底,一般取 β = 10 , 2 , 16 \beta=10,2,16 β=10,2,16,自然数t为尾数字长,整数e为浮点数的阶码,有固定的下限L和上限U,即 L ≤ e ≤ U L \le e \le U L≤e≤U,L,U具体数值由计算机规定
可以验证:F中共有 2 ( β − 1 ) β t − 1 ( U − L + 1 ) + 1 2(\beta-1) \beta^{t-1}(U-L+1)+1 2(β−1)βt−1(U−L+1)+1
个规格化的浮点数
记 m = β L − 1 , M = β U ( 1 − β − t ) m=\beta^{L-1},M=\beta^U(1-\beta^{-t}) m=βL−1,M=βU(1−β−t),若 f ∈ F , f ≠ 0 f\in F,f \neq0 f∈F,f=0,则 m ≤ ∣ f ∣ ≤ M m \le |f| \le M m≤∣f∣≤M
注意:浮点数并不充满整个区间 [ M , m ] [M,m] [M,m]和 [ − M , − m ] [-M,-m] [−M,−m],且分布不等距
F是一个有限集,不可能把区间内所有实数都表示出来,由此便产生舍入误差
2. 误差与误差限
- 误差:设
x
x
x是精确值,
x
∗
x^*
x∗是他的一个近似值,称
e
=
x
−
x
∗
e=x-x^*
e=x−x∗
是近似值 x x x的绝对误差,有量纲可正可负 - 误差限: ∣ x − x ∗ ∣ ≤ ϵ |x-x^*|\le \epsilon ∣x−x∗∣≤ϵ称是近似值 x ∗ x^* x∗的误差限, x x x可表示为 x = x ± ϵ x=x\pm \epsilon x=x±ϵ
3.相对误差与相对误差限
- 相对误差 e r = e x = x − x ∗ x ≅ x − x ∗ x ∗ = e x ∗ e_r=\frac{e}{x}=\frac{x-x^*}{x}\cong\frac{x-x^*}{x^*}=\frac{e}{x^*} er=xe=xx−x∗≅x∗x−x∗=x∗e
- 相对误差限 ∣ e r ∣ ≤ ϵ r |e_r|\le \epsilon_r ∣er∣≤ϵr,即 ∣ x − x ∗ ∣ ∣ x ∗ ∣ ≤ ϵ ∣ x ∗ ∣ ≤ ϵ r \frac{|x-x^*|}{|x^*|}\le \frac{\epsilon}{|x^*|}\le \epsilon_r ∣x∗∣∣x−x∗∣≤∣x∗∣ϵ≤ϵr
4.有效数字
如果近似值
x
∗
x^*
x∗的误差限是某一位的半个单位,该位到
x
∗
x^*
x∗的第一位非零数字共有n位,则称
x
∗
x^*
x∗有n位有效数字
例如对10进制数:
(
X
n
)
10
=
±
(
a
1
10
+
a
2
1
0
2
+
.
.
.
+
a
n
1
0
n
)
×
1
0
m
(X_n)_{10}=\pm(\frac{a_1}{10}+\frac{a_2}{10^2}+...+\frac{a_n}{10^n})\times 10^m
(Xn)10=±(10a1+102a2+...+10nan)×10m
其中
a
1
a_1
a1是1到9的数字,
a
2
,
.
.
.
,
a
n
a_2,...,a_n
a2,...,an是0到9的数字,则误差界为;
∣
X
−
X
∗
∣
≤
ϵ
=
1
2
×
1
0
m
×
1
1
0
n
=
1
2
×
1
0
m
−
n
|X-X^*|\le \epsilon=\frac{1}{2}\times10^m\times\frac{1}{10^n}=\frac{1}{2}\times10^{m-n}
∣X−X∗∣≤ϵ=21×10m×10n1=21×10m−n
5.有效数字与相对误差限的关系
定理1:设近似值
x
∗
=
±
0.
a
1
a
2
.
.
.
a
n
×
1
0
m
x^*=\pm0.a_1a_2...a_n\times10^m
x∗=±0.a1a2...an×10m有n位有效数字,则其相对误差限为:
∣
x
−
x
∗
∣
∣
x
∣
≤
1
2
a
1
×
1
0
−
(
n
−
1
)
\frac{|x-x^*|}{|x|}\le\frac{1}{2a_1}\times10^{-(n-1)}
∣x∣∣x−x∗∣≤2a11×10−(n−1)
定理2:设近似值
x
∗
=
±
0.
a
1
a
2
.
.
.
a
n
×
1
0
m
x^*=\pm0.a_1a_2...a_n\times10^m
x∗=±0.a1a2...an×10m的相对误差限不大于
1
2
(
a
1
+
1
)
×
1
0
−
(
n
−
1
)
\frac{1}{2(a_1+1)} \times10^{-(n-1)}
2(a1+1)1×10−(n−1)则他至少有n位有效数字
6.和差积商的绝对误差限
- ϵ ( x ∗ + y ∗ ) = ϵ ( x ∗ ) + ϵ ( y ∗ ) \epsilon(x^*+y^*)=\epsilon(x^*)+\epsilon(y^*) ϵ(x∗+y∗)=ϵ(x∗)+ϵ(y∗)
- ϵ ( x ∗ − y ∗ ) = ϵ ( x ∗ ) + ϵ ( y ∗ ) \epsilon(x^*-y^*)=\epsilon(x^*)+\epsilon(y^*) ϵ(x∗−y∗)=ϵ(x∗)+ϵ(y∗)
- ϵ ( x ∗ ⋅ y ∗ ) ≈ ϵ ( x ∗ ) ⋅ ∣ y ∗ ∣ + ϵ ( y ∗ ) ⋅ ∣ x ∗ ∣ \epsilon(x^*\cdot y^*)\approx \epsilon(x^*)\cdot |y^*|+\epsilon(y^*)\cdot |x^*| ϵ(x∗⋅y∗)≈ϵ(x∗)⋅∣y∗∣+ϵ(y∗)⋅∣x∗∣
- ϵ ( x ∗ y ∗ ) ≈ ϵ ( x ∗ ) ⋅ ∣ y ∗ ∣ + ϵ ( y ∗ ) ⋅ ∣ x ∗ ∣ ∣ y ∗ ∣ 2 \epsilon(\frac{x^*}{y^*})\approx\frac{\epsilon(x^*)\cdot|y^*|+\epsilon(y^*)\cdot|x^*|}{|y^*|^2} ϵ(y∗x∗)≈∣y∗∣2ϵ(x∗)⋅∣y∗∣+ϵ(y∗)⋅∣x∗∣
7.函数的误差限
- 一元函数:设
f
(
x
)
f(x)
f(x)是一元函数,
x
x
x的近似值为
x
∗
x^*
x∗,以
f
(
x
∗
)
f(x^*)
f(x∗)近似
f
(
x
)
f(x)
f(x),
则函数的误差限为 ϵ ( f ( x ∗ ) ) ≈ ∣ f ′ ( x ∗ ) ∣ ⋅ ϵ ( x ∗ ) \epsilon(f(x^*))\approx|f'(x^*)|\cdot \epsilon(x^*) ϵ(f(x∗))≈∣f′(x∗)∣⋅ϵ(x∗) - 多元函数:设
A
=
f
(
x
1
,
x
2
,
.
.
.
,
x
n
)
,
x
1
,
x
2
,
.
.
.
,
x
n
A=f(x_1,x_2,...,x_n),x_1,x_2,...,x_n
A=f(x1,x2,...,xn),x1,x2,...,xn的近似值是
x
1
∗
,
x
2
∗
,
.
.
.
,
x
n
∗
x_1^*,x_2^*,...,x_n^*
x1∗,x2∗,...,xn∗,则A的近似值
A
∗
=
f
(
x
1
∗
,
x
2
∗
,
.
.
.
,
x
n
∗
)
A^*=f(x_1^*,x_2^*,...,x_n^*)
A∗=f(x1∗,x2∗,...,xn∗),则函数误差限为
ϵ
(
A
∗
)
≈
∑
k
=
1
n
∣
(
∂
f
∂
x
k
)
∗
∣
⋅
ϵ
(
x
k
∗
)
\epsilon(A^*)\approx \sum_{k=1}^n|( \frac{\partial f}{\partial x_k} )^*|\cdot\epsilon(x^*_k)
ϵ(A∗)≈k=1∑n∣(∂xk∂f)∗∣⋅ϵ(xk∗)
相对误差限:
ϵ r ( A ∗ ) = ϵ ( A ∗ ) A ∗ ≈ ∑ k = 1 n ∣ ( ∂ f ∂ x k ) ∗ ∣ ⋅ ϵ ( x k ∗ ) ∣ A ∗ ∣ \epsilon_r(A^*)=\frac{\epsilon(A^*)}{A^*}\approx\sum_{k=1}^n|( \frac{\partial f}{\partial x_k} )^*|\cdot\frac{\epsilon(x^*_k)}{|A^*|} ϵr(A∗)=A∗ϵ(A∗)≈k=1∑n∣(∂xk∂f)∗∣⋅∣A∗∣ϵ(xk∗)
8.误差分析的基本原则
- 避免两个相近数相减
两个相近数相减,有效数字会大大损失 - 避免除数的绝对值远小于被除数的绝对值
- 防止大数吃掉小数
由于计算机位数有限,在数域中成立的运算法则在数值运算中可能不成立,比如结合律 - 简化计算步骤,减少运算次数