仅供大致参考,有许多定义存在不严谨的地方;不同学校的考察重点自然是不同的
第一章 绪论
舍入误差
由于计算机字长是有限的,因此在存储数据时便可能不可避免地丢失部分信息,这便是舍入误差。
截断误差
由于计算机必须在有限的时间内得到运行结果,因此无穷的运算过程必须截断为有限的运算过程,由此产生截断误差。
绝对误差
记 x ∗ x^{*} x∗为真值 x x x的近似值,那么绝对误差就是这两者的绝对差距,即: e ∗ = x ∗ − x e^{*} = x^{*} - x e∗=x∗−x
相对误差
相对误差的相对指的是其考虑了真值 x x x。当然,由于真值 x x x实际是未知的,因此有: e r ∗ = e ∗ x ≈ e ∗ x ∗ e_{r}^{*}=\frac{e^{*}}{x} \approx \frac{e^{*}}{x^{*}} er∗=xe∗≈x∗e∗
绝对误差限
∣ e ∗ ∣ |e^{*}| ∣e∗∣的上限
相对误差限
∣ e r ∗ ∣ |e_{r}^{*}| ∣er∗∣的上限
误差限的计算
记两个近似数 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 ∗ ) \varepsilon\left(x_{1}^{*} \pm x_{2}^{*}\right)=\varepsilon\left(x_{1}^{*}\right)+\varepsilon\left(x_{2}^{*}\right) ε(x1∗±x2∗)=ε(x1∗)+ε(x2∗) ε ( x 1 ∗ x 2 ∗ ) ≈ ∣ x 1 ∗ ∣ ε ( x 2 ∗ ) + ∣ x 2 ∗ ∣ ε ( x 1 ∗ ) \varepsilon\left(x_{1}^{*} x_{2}^{*}\right) \approx\left|x_{1}^{*}\right| \varepsilon\left(x_{2}^{*}\right)+\left|x_{2}^{*}\right| \varepsilon\left(x_{1}^{*}\right) ε(x1∗x2∗)≈∣x1∗∣ε(x2∗)+∣x2∗∣ε(x1∗) ε ( x 1 ∗ / x 2 ∗ ) ≈ ∣ x 2 ∗ ∣ ε ( x 2 ∗ ) + ∣ x 2 ∗ ∣ ( x 1 ∗ ) ∣ x 2 ∗ ∣ 2 \varepsilon\left(x_{1}^{*} / x_{2}^{*}\right) \approx \frac{\left|x_{2}^{*}\right| \varepsilon\left(x_{2}^{*}\right)+\left|x_{2}^{*}\right|\left(x_{1}^{*}\right)}{\left|x_{2}^{*}\right|^{2}} ε(x1∗/x2∗)≈∣x2∗∣2∣x2∗∣ε(x2∗)+∣x2∗∣(x1∗)
有效数字
如果 x ∗ x^* x∗的绝对误差限是它的某一数位的半个单位,并且从 x ∗ x^* x∗左起第一个非零数字到该数位共有 n n n位,则称这 n n n个数字为 x x x的有效数字,也称用 x ∗ x^* x∗近似 x x x时具有 n n n位有效数字。
一般地,凡是由精确值经过四舍五入得到的近似值,其绝对误差限等于该近似值末位的半个单位。
秦九韶算法
对于多项式 f ( x ) = a n x n + a n − 1 x n − 1 + ⋯ + a 1 x + a 0 f(x)=a_{n} x^{n}+a_{n-1} x^{n-1}+\cdots+a_{1} x+a_{0} f(x)=anxn+an−1xn−1+⋯+a1x+a0,逐次去提取个 x x x出来: f ( x ) = ( ( a n x n − 2 + a n − 1 x n − 3 + ⋯ a 3 x + a 2 ) x + a 1 ) x + a 0 ⋮ = ( … ( ( a n x + a n − 1 ) x + a n − 2 ) x + ⋯ + a 1 ) x + a 0 \begin{gathered} f(x)=\left(\left(a_{n} x^{n-2}+a_{n-1} x^{n-3}+\cdots a_{3} x+a_{2}\right) x+a_{1}\right) x+a_{0} \\ \vdots \\ =\left(\ldots\left(\left(a_{n} x+a_{n-1}\right) x+a_{n-2}\right) x+\cdots+a_{1}\right) x+a_{0} \end{gathered} f(x)=((anxn−2+an−1xn−3+⋯a3x+a2)x+a1)x+a0⋮=(…((anx+an−1)x+an−2)x+⋯+a1)x+a0 然后从最里面的括号往外算即可,可以显著减少乘法运算量。
例1
设3.1415是
π
\pi
π的近似值,其有效数字位数是多少
解 注意最后一位5不是精确的(四舍五入应为6),而从3到1一共有4个数字,因此位数为4
例2
x=3.100是某个精确值四舍五入得到的近似值,其有效数字位数是多少
解 由于是四舍五入,因此最后一位也是精确的,从3到最后一个0有4个数字,因此位数为4
例3
设
x
>
0
x>0
x>0,
x
x
x的相对误差为
δ
\delta
δ,求
ln
x
\ln x
lnx的误差。
解 这里的误差应指绝对误差,那么就是求
ln
x
−
ln
x
∗
=
ln
x
x
∗
\ln x-\ln x^{*} = \ln \frac{x}{x^{*}}
lnx−lnx∗=lnx∗x。
现在考虑怎么把这个式子继续给算下去。由于我们相对误差是知道的,也就是有:
x
−
x
∗
x
∗
=
δ
\frac{x-x^{*}}{x^{*}} = \delta
x∗x−x∗=δ 那么接下来把左边这个式子凑出来就行了,有:
ln
x
−
ln
x
∗
=
ln
x
x
∗
=
ln
x
−
x
∗
+
x
∗
x
∗
=
ln
(
δ
+
1
)
\ln x-\ln x^{*}=\ln \frac{x}{x^{*}}=\ln \frac{x-x^{*}+x^{*}}{x^{*}}=\ln (\delta+1)
lnx−lnx∗=lnx∗x=lnx∗x−x∗+x∗=ln(δ+1) 取极限,有
ln
(
δ
+
1
)
≈
δ
\ln (\delta+1) \approx \delta
ln(δ+1)≈δ,即
ln
x
\ln x
lnx的误差的误差仍为
δ
\delta
δ。
例4
求下列各近似值的误差限:
(i)
x
1
∗
+
x
2
∗
+
x
4
∗
;
(ii)
x
1
∗
⋅
x
2
∗
⋅
x
3
∗
;
(iii)
x
2
∗
/
x
4
∗
\text { (i) } x_{1}^{*}+x_{2}^{*}+x_{4}^{*} ; \text { (ii) } x_{1}^{*} \cdot x_{2}^{*} \cdot x_{3}^{*} ; \text { (iii) } x_{2}^{*} / x_{4}^{*}
(i) x1∗+x2∗+x4∗; (ii) x1∗⋅x2∗⋅x3∗; (iii) x2∗/x4∗ 其中
x
1
∗
=
1.1021
,
x
2
∗
=
0.031
,
x
3
∗
=
385.6
,
x
4
∗
=
56.430
x_{1}^{*}=1.1021, x_{2}^{*}=0.031, x_{3}^{*}=385.6, x_{4}^{*}=56.430
x1∗=1.1021,x2∗=0.031,x3∗=385.6,x4∗=56.430
解 考虑代入上文提到的误差限计算公式,有:
e
∗
(
x
1
∗
+
x
2
∗
+
x
4
∗
)
⩽
e
(
x
1
∗
)
+
e
(
x
2
∗
)
+
e
(
x
4
∗
)
=
1
2
×
1
0
−
4
+
1
2
×
1
0
−
3
+
1
2
×
1
0
−
3
⩽
1.052
×
1
0
−
3
\begin{aligned} e^{*}\left(x_{1}^{*}+x_{2}^{*}+x_{4}^{*}\right) & \leqslant e\left(x_{1}^{*}\right)+e\left(x_{2}^{*}\right)+e\left(x_{4}^{*}\right) \\ &=\frac{1}{2} \times 10^{-4}+\frac{1}{2} \times 10^{-3}+\frac{1}{2} \times 10^{-3} \\ & \leqslant 1.052 \times 10^{-3} \end{aligned}
e∗(x1∗+x2∗+x4∗)⩽e(x1∗)+e(x2∗)+e(x4∗)=21×10−4+21×10−3+21×10−3⩽1.052×10−3
e
∗
(
x
1
∗
⋅
x
2
∗
⋅
x
3
∗
)
≈
x
2
∗
⋅
x
3
∗
(
x
1
−
x
1
∗
)
+
x
1
∗
⋅
x
3
∗
⋅
(
x
2
−
x
2
∗
)
+
x
1
∗
⋅
x
2
∗
(
x
3
−
x
3
∗
)
≈
0.215
\begin{array}{l} \left.e^{*}(x_{1}^{*} \cdot x_{2}^{*} \cdot x_{3}^{*}\right) \\ \approx x_{2}^{*} \cdot x_{3}^{*}\left(x_{1}-x_{1}^{*}\right)+x_{1}^{*} \cdot x_{3}^{*} \cdot\left(x_{2}-x_{2}^{*}\right)+x_{1}^{*} \cdot x_{2}^{*}\left(x_{3}-x_{3}^{*}\right) \\ \approx 0.215 \end{array}
e∗(x1∗⋅x2∗⋅x3∗)≈x2∗⋅x3∗(x1−x1∗)+x1∗⋅x3∗⋅(x2−x2∗)+x1∗⋅x2∗(x3−x3∗)≈0.215
e
∗
(
x
2
∗
/
x
4
∗
)
⩽
∣
1
x
4
∗
(
x
2
−
x
2
∗
)
−
x
2
∗
(
x
4
∗
)
2
(
x
4
−
x
4
∗
)
∣
=
∣
x
2
∗
x
4
∗
e
r
∗
(
x
2
)
−
x
2
∗
x
4
∗
e
r
∗
(
x
4
)
∣
⩽
∣
x
2
∗
x
4
∗
∣
[
∣
e
1
∗
(
x
2
)
∣
+
e
r
∗
(
x
4
)
∣
]
=
0.031
56.430
[
1
2
×
1
0
−
3
0.031
+
1
2
×
1
0
−
3
56.430
]
⩽
1
0
−
5
\begin{aligned} e^{*}\left(x_{2}^{*} / x_{4}^{*}\right) & \leqslant\left|\frac{1}{x_{4}^{*}}\left(x_{2}-x_{2}^{*}\right)-\frac{x_{2}^{*}}{\left(x_{4}^{*}\right)^{2}}\left(x_{4}-x_{4}^{*}\right)\right| \\ &=\left|\frac{x_{2}^{*}}{x_{4}^{*}} e_{r}^{*}\left(x_{2}\right)-\frac{x_{2}^{*}}{x_{4}^{*}} e_{r}^{*}\left(x_{4}\right)\right| \\ & \leqslant \mid \frac{x_{2}^{*}}{x_{4}^{*}} \mid\left[\left|e_{1}^{*}\left(x_{2}\right)\right|+e_{r}^{*}\left(x_{4}\right) \mid\right] \\ &=\frac{0.031}{56.430}\left[\frac{\frac{1}{2} \times 10^{-3}}{0.031}+\frac{\frac{1}{2} \times 10^{-3}}{56.430}\right] \\ & \leqslant 10^{-5} \end{aligned}
e∗(x2∗/x4∗)⩽∣∣∣∣∣x4∗1(x2−x2∗)−(x4∗)2x2∗(x4−x4∗)∣∣∣∣∣=∣∣∣∣x4∗x2∗er∗(x2)−x4∗x2∗er∗(x4)∣∣∣∣⩽∣x4∗x2∗∣[∣e1∗(x2)∣+er∗(x4)∣]=56.4300.031[0.03121×10−3+56.43021×10−3]⩽10−5
例5
设
S
=
1
2
g
t
2
S=\frac{1}{2} g t^{2}
S=21gt2,假定
g
g
g是准确的,而对
t
t
t的测量有0.1秒的误差,证明当t增大时
S
S
S的绝对误差增大,而相对误差却减小。
解 绝对误差
e
(
S
)
=
S
−
S
∗
=
g
t
(
t
−
t
∗
)
=
g
t
e
(
t
)
e(S)=S-S^{*}=g t\left(t-t^{*}\right)=g t e(t)
e(S)=S−S∗=gt(t−t∗)=gte(t) 相对误差
e
r
(
S
)
=
S
−
S
∗
S
=
g
t
(
t
−
t
∗
)
1
2
g
t
2
=
2
e
(
t
)
t
e_{r}(S)=\frac{S-S^{*}}{S}=\frac{g t\left(t-t^{*}\right)}{\frac{1}{2} g t^{2}}=\frac{2 e(t)}{t}
er(S)=SS−S∗=21gt2gt(t−t∗)=t2e(t)由于
e
(
t
)
e(t)
e(t)为定值,因此t增大时绝对误差变大,相对误差变小。
例6
用秦九韶算法求多项式
p
(
x
)
=
3
x
5
−
2
x
3
+
x
+
7
p(x)=3 x^{5}-2 x^{3}+x+7
p(x)=3x5−2x3+x+7在
x
=
3
x=3
x=3处的值。
解 根据秦九韶算法,有
p
(
x
)
=
(
(
3
x
2
−
2
)
x
2
+
1
)
x
+
7
p(x) = ((3x^2-2)x^2+1)x+7
p(x)=((3x2−2)x2+1)x+7,代入可得值为685。
例7
用迭代法
x
k
+
1
=
1
1
+
x
k
(
k
=
0
,
1
,
⋯
)
x_{k+1}=\frac{1}{1+x_{k}}(k=0,1, \cdots)
xk+1=1+xk1(k=0,1,⋯)求方程
x
2
+
x
−
1
=
0
x^{2}+x-1=0
x2+x−1=0的正根
x
∗
=
−
1
+
5
2
x^{*}=\frac{-1+\sqrt{5}}{2}
x∗=2−1+5,取
x
0
=
1
x_{0}=1
x0=1。如果使用加权平均迭代公式:
x
k
+
1
=
ω
x
k
+
(
1
−
ω
)
1
1
+
x
k
x_{k+1}=\omega x_{k}+(1-\omega) \frac{1}{1+x_{k}}
xk+1=ωxk+(1−ω)1+xk1 验证当
ω
=
7
25
\omega=\frac{7}{25}
ω=257时,采用该加权平均公式比迭代法收敛快。
解 所谓收敛快不快看的就是有效数字的位数。那么先看原始的迭代法,有:
x
0
=
1
,
x
1
=
0.5
,
x
2
=
0.667
,
x
3
=
0.6
,
x
4
=
0.625
x_{0}=1,x_{1}=0.5,x_{2}=0.667,x_{3}=0.6,x_{4}=0.625
x0=1,x1=0.5,x2=0.667,x3=0.6,x4=0.625。可以看到直到
x
4
x_{4}
x4的有效数字位数仍只有1;
而对于加权平均迭代法,有
x
0
=
1
,
x
1
=
0.64
,
x
2
=
0.618024
,
x
3
=
0.618034
,
x
4
=
0.618034
x_{0}=1,x_{1}=0.64,x_{2}=0.618024,x_{3}=0.618034,x_{4}=0.618034
x0=1,x1=0.64,x2=0.618024,x3=0.618034,x4=0.618034。可以看到在
x
3
x_{3}
x3时有效数字便有5位,收敛更快。