# 误差
精确值 x, 近似值 x∗
绝对误差ε
ε(x)=x∗−x
绝对误差限η
ε(x)=∣x∗−x∣≤η
相对误差εr
εr=xε=xx∗−x
因为准确值 x 一般不知道,所以在实际计算中可以取(前提是 εr(x∗) 很小)
εr=x∗x∗−x
证明在上述前提下,式子成立
xε(x∗)−x∗ε(x∗)=ε(x∗)(xx∗x∗−x)=ε2(x∗)xx∗1=[ε(x∗)/x∗]2x/x∗1=[ε(x∗)/x∗]2[x∗−ε(x∗)]/x∗1=[ε(x∗)/x∗]2[1−ε(x∗)/x∗]1≈[ε(x∗)/x∗]2
相对误差限ηr
ηr=∣x∗∣η
# 有效数字
有效数字的定义:若近似数 x∗ 的绝对误差限不大于 0.5×10−j,则称近似数 x∗ 准确到小数点后 j 位;从这个小数点后的第 j 位数字直到最左边非 0 数字之间的所有数字都称为 x∗ 的有效数字
![]()
如果近似值的有效位数是由四舍五入产生的,那么直接计算到第一个非零数有几位即可
如果将 x 的近似值 x∗ 表示成
x∗=±0.a1a2...an×10m
其中,a1,a2,...,an 是 0∼9 之间的自然数, a1=0 ,那么若
∣x∗−x∣≤21×10m−l,1≤l≤n
则根据有效数字的定义可以推出 x∗ 有 l 位有效数字
# 有效数字和相对误差限的关系
设近似值 x∗=±0.a1a2...an×10m ,其有 n 位有效数字, a1=0,则其相对误差限为 \frac{1}{2a_1}\times 10^
证明
∣x−x∗∣≤0.5×10m−n∣x∗∣≥a1×10m−1⇒∣x∗∣∣x−x∗∣≤2a11×10−n+1
设近似值 x∗=±0.a1a2...an×10m 的相对误差限为 2(a1+1)1×10−n+1,a1=0,则它有 n 位有效数字
证明
∣x∗∣∣x∗−x∣≤2(a1+1)1×10−n+1,a1=0∣x∗∣≤(a1+1)×10m−1⇒∣x∗−x∣≤0.5×10m−n
# 数值运算的误差估计
ε(x∗) 表示 x∗ 的误差
η(x∗) 表示 x∗ 的误差限
ηr(x∗) 表示 x∗ 的相对误差限
# 加减法的误差限
和的误差是误差之和,差的误差是误差之差
任意多个数的和或差的误差限等于各数误差限之和
以减法为例证明:
∣ε(x∗−y∗)∣≤∣ε(x∗)−ε(y∗)∣≤∣ε(x∗)∣+∣ε(y∗)∣≤η(x∗)+η(y∗)
相对误差限:
ηr(x∗+y∗)≤{max[ηr(x∗),ηr(y∗)]∣x∗+y∗∣∣x∗−y∗∣⋅max[ηr(x∗),ηr(y∗)]x∗,y∗同号x∗,y∗异号
当x∗,y∗ 异号,并且绝对值相差较小时,ηr(x∗+y∗) 会非常大
证明
∣x∗+y∗∣∣ε(x∗+y∗)∣≤∣x∗+y∗∣∣η(x∗)∣+∣η(y∗)∣=∣x∗+y∗∣∣x∗∣⋅∣x∗∣∣η(x∗)∣+∣x∗+y∗∣∣y∗∣⋅∣y∗∣∣η(y∗)∣=∣x∗+y∗∣∣x∗∣ηr(x∗)+∣x∗+y∗∣∣y∗∣ηr(y∗)≤∣x∗+y∗∣∣x∗∣+∣y∗∣⋅max[ηr(x∗),ηr(y∗)]
# 乘法的误差限
η(x∗y∗)=∣x∗∣η(y∗)+∣y∗∣η(x∗)ηr(x∗y∗)=ηr(x∗)+ηr(y∗)
证明
d(xy)=xd(y)+yd(x)ε(x∗y∗)≈x∗d(y∗)+y∗d(x∗)≈x∗ε(y∗)+y∗ε(x∗)
∣ε(x∗y∗)∣≤∣x∗ε(y∗)+y∗ε(x∗)∣≤∣x∗ε(y∗)∣+∣y∗ε(x∗)∣=∣x∗∣⋅∣ε(y∗)∣+∣y∗∣⋅∣ε(x∗)∣≤∣x∗∣⋅∣η(y∗)∣+∣y∗∣⋅∣η(x∗)∣
∣x∗y∗∣∣ε(x∗y∗)∣≤∣x∗y∗∣∣x∗∣⋅∣η(y∗)∣+∣y∗∣⋅∣η(x∗)∣=∣x∗∣∣η(x∗)∣+∣y∗∣∣η(y∗)∣
# 除法的误差限
η(y∗x∗)=∣y∗∣2∣x∗∣η(y∗)+∣y∗∣η(x∗)ηr(y∗x∗)=ηr(x∗)+ηr(y∗)
# 近似计算遵循的原则
# 加减运算
把小数位数多的四舍五入,使其比小数位数最少得数多一位小数
计算结果保留的小数位数和原近似数中小数位数最少者相同
# 乘除运算
各因子保留的位数应比有效数字位数最少者的位置多一位
结果的有效数字位数与原近似值中有效数字位数最少者的位数至多少一位
# 乘方与开方运算
原来近似值有几位有效数字,计算结果仍保留几位有效数字
# 对数运算
所取对数的位数应与其真数的有效数字的位数相等
# 注意的问题
- 避免两个相近的数相减
- 避免除数绝对值远小于被除数绝对值的除法
- 防止大数吃小数
- 尽量减少运算次数