一、绪论
误差的基本概念
绝对误差
- 设 x ∗ x^* x∗ 为准确值, x x x 是 x ∗ x^* x∗ 的一个近似值,记 e ( x ) = x ∗ − x \pmb{{e(x)}=x^*-x} e(x)=x∗−xe(x)=x∗−xe(x)=x∗−x,称 e ( x ) e(x) e(x) 为近似值 x x x 的绝对误差
- 绝对误差不是误差的绝对值
- 若存在 ϵ > 0 \epsilon > 0 ϵ>0,使得 ∣ e ( x ) ∣ = ∣ x ∗ − x ∣ ≤ ϵ \pmb{|e(x)|=|x^*-x| \leq \epsilon} ∣e(x)∣=∣x∗−x∣≤ϵ∣e(x)∣=∣x∗−x∣≤ϵ∣e(x)∣=∣x∗−x∣≤ϵ,则 ϵ \epsilon ϵ 称为近似值的绝对误差限
相对误差
- 设 x ∗ x^* x∗ 为准确值, x x x 是 x ∗ x^* x∗ 的一个近似值,记 e r ( x ) = x ∗ − x x ∗ = e ( x ) x ∗ \pmb{e_r(x)=\frac{x^*-x}{x^*}=\frac{e(x)}{x^*}} er(x)=x∗x∗−x=x∗e(x)er(x)=x∗x∗−x=x∗e(x)er(x)=x∗x∗−x=x∗e(x),则称 e r ( x ) e_r(x) er(x) 为近似值 x x x 的相对误差
- 由于精确值难以求得,通常以 e ‾ r ( x ) = x ∗ − x x \pmb{\overline{e}_r(x)=\frac{x^*-x}{x}} er(x)=xx∗−xer(x)=xx∗−xer(x)=xx∗−x 作为相对误差
有效数
- 如果近似值 x x x 的绝对误差限是其某一位的半个单位,且该位直到 x x x 的第一个非零数字之间共有 n 位,则称 x x x 具有 n 位有效数字,用这 n 位有效数字表示的近似值称为有效数
- 如 π \pi π 的近似值取 x 1 = 3.14 x_1=3.14 x1=3.14,则 ∣ π − x 1 ∣ = 0.00159... < 0.005 = 1 2 × 1 0 − 2 |\pi-x_1|=0.00159...<0.005=\frac{1}{2} \times 10^{-2} ∣π−x1∣=0.00159...<0.005=21×10−2,所以 x 1 x_1 x1 有 3 位有效数字
数据误差对函数值的影响
设
x
1
∗
,
x
2
∗
x^*_1,\ x^*_2
x1∗, x2∗ 为准确值,
y
∗
=
f
(
x
1
∗
,
x
2
∗
)
,
x
1
,
x
2
y^*=f(x^*_1, x^*_2),\ x_1,\ x_2
y∗=f(x1∗,x2∗), x1, x2 为对应的近似值,
y
=
f
(
x
1
,
x
2
)
y=f(x_1,\ x_2)
y=f(x1, x2),由二元函数 Taylor 展开得
e
(
y
)
=
y
∗
−
y
=
f
(
x
1
∗
,
x
2
∗
)
−
f
(
x
1
,
x
2
)
≈
∂
f
(
x
1
,
x
2
)
∂
x
1
(
x
1
∗
−
x
1
)
+
∂
f
(
x
1
,
x
2
)
∂
x
2
(
x
2
∗
−
x
2
)
≈
∂
f
(
x
1
,
x
2
)
∂
x
1
e
(
x
1
)
+
∂
f
(
x
1
,
x
2
)
∂
x
2
e
(
x
2
)
①
e
r
(
y
)
=
e
(
y
)
y
≈
∂
f
(
x
1
,
x
2
)
∂
x
1
x
1
f
(
x
1
,
x
2
)
e
r
(
x
1
)
+
∂
f
(
x
1
,
x
2
)
∂
x
2
x
2
f
(
x
1
,
x
2
)
e
r
(
x
2
)
②
\begin{aligned} e(y) &= y^*-y=f(x_1^*,x_2^*)-f(x_1, x_2) \\ &\approx \frac{\partial f(x_1, x_2)}{\partial x_1}(x^*_1-x_1)+\frac{\partial f(x_1, x_2)}{\partial x_2}(x^*_2-x_2) \\ &\approx \frac{\partial f(x_1, x_2)}{\partial x_1}e(x_1)+\frac{\partial f(x_1, x_2)}{\partial x_2}e(x_2) \ ①\\ \\ e_r(y) &= \frac{e(y)}{y} \approx \frac{\partial f(x_1, x_2)}{\partial x_1} \frac{x_1}{f(x_1, x_2)}e_r(x_1)+\frac{\partial f(x_1, x_2)}{\partial x_2}\frac{x_2}{f(x_1, x_2)}e_r(x_2)\ ② \end{aligned}
e(y)er(y)=y∗−y=f(x1∗,x2∗)−f(x1,x2)≈∂x1∂f(x1,x2)(x1∗−x1)+∂x2∂f(x1,x2)(x2∗−x2)≈∂x1∂f(x1,x2)e(x1)+∂x2∂f(x1,x2)e(x2) ①=ye(y)≈∂x1∂f(x1,x2)f(x1,x2)x1er(x1)+∂x2∂f(x1,x2)f(x1,x2)x2er(x2) ②
利用 ① 和 ② 可得
e
(
x
1
+
x
2
)
=
e
(
x
1
)
+
e
(
x
2
)
e
(
x
1
−
x
2
)
=
e
(
x
1
)
−
e
(
x
2
)
e
(
x
1
x
2
)
≈
x
2
e
(
x
1
)
+
x
1
e
(
x
2
)
e
(
x
1
x
2
)
≈
1
x
2
e
(
x
1
)
−
x
1
x
2
2
e
(
x
2
)
e
r
(
x
1
+
x
2
)
≈
x
1
x
1
+
x
2
e
r
(
x
1
)
+
x
2
x
1
+
x
2
e
r
(
x
2
)
e
r
(
x
1
−
x
2
)
≈
x
1
x
1
−
x
2
e
r
(
x
1
)
−
x
2
x
1
−
x
2
e
r
(
x
2
)
e
r
(
x
1
x
2
)
≈
e
r
(
x
1
)
+
e
r
(
x
2
)
e
r
(
x
1
x
2
)
≈
e
r
(
x
1
)
−
e
r
(
x
2
)
\begin{aligned} &e(x_1+x_2)=e(x_1)+e(x_2) \\ &e(x_1-x_2) = e(x_1)-e(x_2) \\ &e(x_1x_2) \approx x_2e(x_1)+x_1e(x_2) \\ &e(\frac{x_1}{x_2}) \approx \frac{1}{x_2}e(x_1)-\frac{x_1}{x_2^2}e(x_2) \\ &e_r(x_1+x_2) \approx \frac{x_1}{x_1+x_2}e_r(x_1)+\frac{x_2}{x_1+x_2}e_r(x_2) \\ &e_r(x_1-x_2) \approx \frac{x_1}{x_1-x_2}e_r(x_1)-\frac{x_2}{x_1-x_2}e_r(x_2) \\ &e_r(x_1x_2) \approx e_r(x_1)+e_r(x_2) \\ &e_r(\frac{x_1}{x_2}) \approx e_r(x_1)-e_r(x_2) \end{aligned}
e(x1+x2)=e(x1)+e(x2)e(x1−x2)=e(x1)−e(x2)e(x1x2)≈x2e(x1)+x1e(x2)e(x2x1)≈x21e(x1)−x22x1e(x2)er(x1+x2)≈x1+x2x1er(x1)+x1+x2x2er(x2)er(x1−x2)≈x1−x2x1er(x1)−x1−x2x2er(x2)er(x1x2)≈er(x1)+er(x2)er(x2x1)≈er(x1)−er(x2)
例子
设 x = 0.1230 , y = 1.234 x=0.1230,\ y=1.234 x=0.1230, y=1.234 均为有效数字,试分析 ( x − y ) (x-y) (x−y) 和 x 2 cos ( y ) x^2 \cos(y) x2cos(y) 得绝对误差限、相对误差限和有效数字
解:由条件有
∣
e
(
x
)
∣
≤
1
2
×
1
0
−
4
,
∣
e
(
y
)
∣
≤
1
2
×
1
0
−
3
|e(x)| \leq \frac{1}{2} \times 10^{-4},\ |e(y)| \leq \frac{1}{2} \times 10^{-3}
∣e(x)∣≤21×10−4, ∣e(y)∣≤21×10−3,则
∣
e
(
x
−
y
)
∣
=
∣
e
(
x
)
−
e
(
y
)
∣
≤
∣
e
(
x
)
∣
+
∣
e
(
y
)
∣
≤
0.55
×
1
0
−
3
∣
e
r
(
x
−
y
)
∣
=
∣
e
(
x
−
y
)
x
−
y
∣
≤
∣
0.55
×
1
0
−
3
0.123
−
1.234
∣
=
0.4950
×
1
0
−
3
∣
e
(
x
2
cos
y
)
∣
≈
∣
2
x
cos
y
e
(
x
)
−
x
2
sin
y
e
(
y
)
∣
≤
2
x
∣
cos
y
∣
∣
e
(
x
)
∣
+
x
2
∣
sin
y
∣
∣
e
(
y
)
∣
≤
0.1120
×
1
0
−
4
∣
e
r
(
x
2
cos
y
)
∣
=
∣
e
(
x
2
cos
y
)
x
2
cos
y
∣
≤
0.2240
×
1
0
−
2
\begin{aligned} |e(x-y)| &= |e(x)-e(y)| \leq |e(x)|+|e(y)| \leq 0.55 \times 10^{-3} \\ |e_r(x-y)| &= |\frac{e(x-y)}{x-y}| \leq |\frac{0.55 \times 10^{-3}}{0.123-1.234}|=0.4950 \times 10^{-3} \\ |e(x^2\cos{y})| &\approx |2x\cos{y}e(x)-x^2\sin{y}e(y)| \\ &\leq 2x|\cos{y}||e(x)|+x^2|\sin{y}||e(y)| \leq 0.1120 \times 10^{-4} \\ |e_r(x^2\cos{y})| &= |\frac{e(x^2\cos{y})}{x^2\cos{y}}| \leq 0.2240 \times 10^{-2} \end{aligned}
∣e(x−y)∣∣er(x−y)∣∣e(x2cosy)∣∣er(x2cosy)∣=∣e(x)−e(y)∣≤∣e(x)∣+∣e(y)∣≤0.55×10−3=∣x−ye(x−y)∣≤∣0.123−1.2340.55×10−3∣=0.4950×10−3≈∣2xcosye(x)−x2sinye(y)∣≤2x∣cosy∣∣e(x)∣+x2∣siny∣∣e(y)∣≤0.1120×10−4=∣x2cosye(x2cosy)∣≤0.2240×10−2
由上可知,
∣ e ( x − y ) ∣ ≤ 0.55 × 1 0 − 3 < 1 2 × 1 0 − 2 , x − y = − 1.111 |e(x-y)|\leq0.55 \times10^{-3} \lt \frac{1}{2} \times 10^{-2}, \ x-y=-1.111 ∣e(x−y)∣≤0.55×10−3<21×10−2, x−y=−1.111,所以 ( x − y ) (x-y) (x−y) 具有 3 位有效数字
∣ e ( x 2 cos y ) ∣ < 1 2 × 1 0 − 4 , x 2 cos y = 0.0049996 |e(x^2\cos{y})| \lt \frac{1}{2} \times 10^{-4},\ x^2\cos{y}=0.0049996 ∣e(x2cosy)∣<21×10−4, x2cosy=0.0049996,所以 x 2 cos y x^2\cos{y} x2cosy 具有 2 位有效数字
数值稳定性
- 对于某一算法,如果初始数据很小的误差仅使最终结果产生较小的误差,则称该算法是数值稳定的,否则称为数值不稳定的
- 例:建立计算积分 ∫ 0 1 x n x + 5 d x , n = 0 , 1 , 2 , . . . , 10 \int_0^1\frac{x^n}{x+5}dx,\ n=0,1,2,...,10 ∫01x+5xndx, n=0,1,2,...,10 的递推公式,并研究其误差传播
I n = ∫ 0 1 x n + 5 x n − 1 − 5 x n − 1 x + 5 d x = ∫ 0 1 x n − 1 d x − 5 ∫ 0 1 x n − 1 x + 5 d x = 1 n − 5 I n − 1 → 不 稳 定 若 上 式 转 换 为 : I n − 1 = 1 5 ( 1 n − I n ) , ( n = 10 , 9 , . . . , 2 , 1 ) → 稳 定 \begin{aligned} I_n &= \int_0^1\frac{x^n+5x^{n-1}-5x^{n-1}}{x+5}dx \\ &= \int_0^1x^{n-1}dx - 5\int_0^1\frac{x^{n-1}}{x+5}dx \\ &= \frac{1}{n} -5I_{n-1} \rightarrow 不稳定 \\ 若上式转换为:I_{n-1} &= \frac{1}{5}(\frac{1}{n}-I_n),\ (n=10,9,...,2,1) \rightarrow 稳定 \end{aligned} In若上式转换为:In−1=∫01x+5xn+5xn−1−5xn−1dx=∫01xn−1dx−5∫01x+5xn−1dx=n1−5In−1→不稳定=51(n1−In), (n=10,9,...,2,1)→稳定
- 如果输入数据有微小的误差,引起输出数据只有微小的改变,称这类问题为良态的,否则称为病态的
实际计算中应注意的一些问题
- 尽量避免除数绝对值远远小于被除数绝对值
- 尽量避免两个相近的数相减
- 防止大数 “吃” 小数
- 简化计算步骤,减少运算次数
秦九韶算法
将多项式
f
(
x
)
=
a
0
x
n
+
a
1
x
n
−
1
+
.
.
.
+
a
n
−
1
x
+
a
n
f(x)=a_0x^n+a_1x^{n-1}+...+a_{n-1}x+a_n
f(x)=a0xn+a1xn−1+...+an−1x+an 转换为如下嵌套形式:
f
(
x
)
=
(
.
.
.
(
(
a
0
x
+
a
1
)
x
+
a
2
)
x
+
.
.
.
+
a
n
−
1
)
x
+
a
n
f(x) = (...((a_0x+a_1)x+a_2)x+...+a_{n-1})x+a_n
f(x)=(...((a0x+a1)x+a2)x+...+an−1)x+an
改成表格形式如下:
a 0 a_0 a0 | a 1 a_1 a1 | a 2 a_2 a2 | … | a n − 1 a_{n-1} an−1 | a n a_n an | |
---|---|---|---|---|---|---|
x = x 0 x=x_0 x=x0 | b 0 x 0 b_0x_0 b0x0 | b 1 x 0 b_1x_0 b1x0 | … | b n − 2 x 0 b_{n-2}x_0 bn−2x0 | b n − 1 x 0 b_{n-1}x_0 bn−1x0 | |
b 0 b_0 b0 | b 1 b_1 b1 | b 2 b_2 b2 | … | b n − 1 b_{n-1} bn−1 | b n = f ( x 0 ) b_n=f(x_0) bn=f(x0) |
例:已知 f ( x ) = 8 x 5 + 4 x 3 − 9 x + 1 f(x)=8x^5+4x^3-9x+1 f(x)=8x5+4x3−9x+1 用秦九韶法求 f ( 3 ) f(3) f(3)
解:使用表格可得
8 8 8 | 0 0 0 | 4 4 4 | 0 0 0 | − 9 -9 −9 | 1 1 1 | |
---|---|---|---|---|---|---|
x 0 = 3 x_0=3 x0=3 | 3 × 8 = 24 3\times 8 = 24 3×8=24 | 24 × 3 = 72 24 \times 3 = 72 24×3=72 | 76 × 3 = 228 76 \times 3 = 228 76×3=228 | 228 × 3 = 684 228 \times 3 = 684 228×3=684 | 675 × 3 = 2025 675 \times 3=2025 675×3=2025 | |
8 8 8 | 24 + 0 = 24 24+0=24 24+0=24 | 72 + 4 = 76 72+4=76 72+4=76 | 228 + 0 = 228 228+0=228 228+0=228 | 684 + ( − 9 ) = 675 684+(-9)=675 684+(−9)=675 | 2025 + 1 = f ( 3 ) 2025+1=f(3) 2025+1=f(3) |
故 f ( 3 ) = 2026 f(3)=2026 f(3)=2026