一、误差的来源与种类
模型误差(Modeling Error)-从实际问题中抽象出数学模型时产生的误差
观测误差(Measurement Error )-通过测量得到模型中参数的值导致输入数据的误差
舍入误差(Roundoff Error)-由于计算机字长有限而在数值运算的每一步所产生的误差
方法误差 or截断误差(Truncation Error )-近似求解时产生的误差,例如泰勒展开式忽略高阶项
二、误差分析
设 x x x为精确值, x ∗ x^* x∗为 x x x的近似值
概念 | 释义 | 性质 |
---|---|---|
绝对误差 | e x = x − x ∗ e^x=x-x^* ex=x−x∗ ,则称 e x e^x ex为近似值的绝对误差,简称误差 | 当绝对误差为正时,又叫做强近似值;当绝对误差为负时,又叫做弱近似值 |
绝对误差限 | 若 ∣ e x ∣ \lvert e^x \rvert ∣ex∣不超过某正数 ϵ ∗ \epsilon^* ϵ∗,则称 ϵ ∗ \epsilon^* ϵ∗ 为近似值的绝对误差限,简称误差限 | 总是正数,且现实中相较绝对误差更加常用 |
相对误差 | e r ∗ = e x ∣ x ∣ e^*_ r= \frac{e^x}{\lvert x \rvert} \quad er∗=∣x∣ex为近似值 x ∗ x^* x∗的相对误差 | 在实际计算中,由于真值x xx总是不知道的,因此相对误差通常取 e r ∗ = e x ∣ x ∗ ∣ e^*_ r= \frac{e^x}{\lvert x^* \rvert} \quad er∗=∣x∗∣ex |
相对误差限 | ϵ r ∗ = ϵ x ∣ x ∣ \epsilon^*_ r= \frac{\epsilon^x}{\lvert x \rvert} \quad ϵr∗=∣x∣ϵx为近似值 x ∗ x^* x∗的相对误差限 | 总是正数,且现实中相较相对误差更加常用 |
三、有效数字
用科学计数法,记 x A = ± 1 0 k × 0. a 1 a 2 a 3 ⋯ a n ⋯ x_A=\pm10^k\times0.a_1a_2a_3\cdots a_n\cdots xA=±10k×0.a1a2a3⋯an⋯(其中 a 1 ≠ 0 a_1\not=0 a1=0)。若 ∣ x − x A ∣ < 0.5 × 1 0 k − n \left| \ x-x_A\right|<0.5\times10^{k-n} ∣ x−xA∣<0.5×10k−n,则称 x A x_A xA为有n位有效数字,精确到 1 0 k − n 10^{k-n} 10k−n。
=>已知 x 有 n 位有效数字,则其相对误差限为*
ϵ
r
∗
=
∣
ϵ
∗
x
∗
∣
≤
0.5
×
1
0
k
−
n
1
0
k
×
0.
a
1
a
2
a
3
⋯
a
n
≤
1
2
a
1
×
1
0
−
n
+
1
\epsilon_r^*=\left| \frac{\epsilon^*}{x^*}\right|\leq\frac{0.5\times10^{k-n}}{10^k\times0.a_1a_2a_3\cdots a_n}\leq\frac{1}{2a_1}\times10^{-n+1}
ϵr∗=∣∣∣x∗ϵ∗∣∣∣≤10k×0.a1a2a3⋯an0.5×10k−n≤2a11×10−n+1
=>已知 x 相对误差限,求其有效数字*
已知
∣
x
−
x
∗
∣
≤
ϵ
r
∗
×
∣
x
∗
∣
≤
0.5
×
1
0
k
−
n
\left| \ x-x^*\right|\leq\epsilon_r^*\times\left| x^*\right|\leq0.5\times10^{k-n}
∣ x−x∗∣≤ϵr∗×∣x∗∣≤0.5×10k−n
ϵ
r
∗
×
∣
x
∗
∣
=
ϵ
r
∗
×
0.
a
1
a
2
a
3
⋯
×
1
0
k
≤
ϵ
r
∗
×
(
a
1
+
1
)
×
1
0
k
−
1
≤
0.5
×
1
0
k
−
n
\epsilon_r^*\times\left| x^*\right|=\epsilon_r^*\times0.a_1a_2a_3\cdots\times10^k\leq\epsilon_r^*\times(a_1+1)\times10^{k-1}\leq0.5\times10^{k-n}
ϵr∗×∣x∗∣=ϵr∗×0.a1a2a3⋯×10k≤ϵr∗×(a1+1)×10k−1≤0.5×10k−n
则 x* 相对误差限
ϵ
r
∗
\epsilon_r^*
ϵr∗可以写为
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
则有
x
−
x
∗
≤
ϵ
r
∗
×
∣
x
∗
∣
=
1
2
(
a
1
+
1
)
×
1
0
−
n
+
1
×
0.
a
1
a
2
a
3
⋯
×
1
0
k
<
1
2
(
a
1
+
1
)
×
(
a
1
+
1
)
×
1
0
−
n
+
1
=
0.5
×
1
0
k
−
n
x-x^*\leq\epsilon_r^*\times\left| x^*\right|=\frac{1}{2{(a_1+1)}}\times10^{-n+1}\times0.a_1a_2a_3\cdots\times10^k<\frac{1}{2{(a_1+1)}}\times(a_1+1)\times10^{-n+1}=0.5\times10^{k-n}
x−x∗≤ϵr∗×∣x∗∣=2(a1+1)1×10−n+1×0.a1a2a3⋯×10k<2(a1+1)1×(a1+1)×10−n+1=0.5×10k−n
满足条件,则其有效数字至少为n。
四、算术运算的误差估计
设多元函数
A
=
f
(
x
1
,
x
2
,
.
.
.
.
,
x
n
)
A=f(x_1,x_2,....,x_n)
A=f(x1,x2,....,xn),其中
x
1
∗
,
x
2
∗
,
.
.
.
.
,
x
n
∗
x_1^*,x_2^*,....,x_n^*
x1∗,x2∗,....,xn∗为
x
1
,
x
2
,
.
.
.
.
,
x
n
x_1,x_2,....,x_n
x1,x2,....,xn的近似值
A
∗
=
f
(
x
1
∗
,
x
2
∗
,
.
.
.
.
,
x
n
∗
)
A^*=f(x_1^*,x_2^*,....,x_n^*)
A∗=f(x1∗,x2∗,....,xn∗)
考察
A
−
A
∗
A-A^*
A−A∗
在点
x
=
(
x
1
,
x
2
,
.
.
.
.
,
x
n
)
x=(x_1,x_2,....,x_n)
x=(x1,x2,....,xn)的泰勒展开式,略去高阶项
则
e
(
A
)
=
A
−
A
∗
=
f
(
x
1
,
x
2
,
.
.
.
.
,
x
n
)
−
f
(
x
1
∗
,
x
2
∗
,
.
.
.
.
,
x
n
∗
)
≈
∑
j
=
1
n
∂
f
(
x
)
∂
x
j
(
x
j
−
x
j
∗
)
e(A)=A-A^*=f(x_1,x_2,....,x_n)-f(x_1^*,x_2^*,....,x_n^*)\approx \sum_{j=1}^n \frac{\partial f(x)}{\partial x_j}(x_j-x^*_j) \quad
e(A)=A−A∗=f(x1,x2,....,xn)−f(x1∗,x2∗,....,xn∗)≈∑j=1n∂xj∂f(x)(xj−xj∗)
五、病态问题和条件数
对于
y
=
f
(
x
)
y = f (x)
y=f(x),若用
x
∗
x^*
x∗ 取代
x
x
x,将对
y
y
y 产生什么影响
e
r
(
y
)
=
f
(
x
)
−
f
(
x
∗
)
f
(
x
∗
)
≈
∣
x
f
′
(
x
)
f
(
x
)
∣
⋅
∣
x
−
x
∗
x
∣
=
∣
x
f
′
(
x
)
f
(
x
)
∣
⋅
e
r
∗
e_r(y)=\frac{f(x)-f(x^*)}{f(x^*)}\approx|\frac{xf^{'}(x)}{f(x)}|\cdot|\frac{x-x^*}{x}|=|\frac{xf^{'}(x)}{f(x)}|\cdot e^*_ r
er(y)=f(x∗)f(x)−f(x∗)≈∣f(x)xf′(x)∣⋅∣xx−x∗∣=∣f(x)xf′(x)∣⋅er∗
则 C p = ∣ x f ′ ( x ) f ( x ) ∣ C_p=|\frac{xf^{'}(x)}{f(x)}| Cp=∣f(x)xf′(x)∣即为条件数,自变量相对误差一般不会差太大,如果条件数 C p C_p Cp很大,将引起函数值相对误差很大,出现这种问题就是病态问题。