误差的基本概念与有效数字

绝对误差与绝对误差界

设真值为 xx、近似值为 aa绝对误差xax-a;若给出常数 εa>0\varepsilon_a>0 使得

xaεa|x-a| \le \varepsilon_a

则称 εa\varepsilon_a绝对误差界,并由此得到区间 x[aεa,a+εa]x\in[a-\varepsilon_a,a+\varepsilon_a] 的包含信息。绝对误差总是非负量(指其模)。

相对误差与相对误差界

a0a\neq 0 时,相对误差定义为xaa\frac{x-a}{a}

其绝对值的上界记为 相对误差界 εra\frac{\varepsilon_r}{|a|},即

xaaεra\left|\frac{x-a}{a}\right|\le \frac{\varepsilon_r}{|a|}

相对误差能反映误差相对量级,通常比绝对误差更有解释力。

有效数字的定义与四舍五入规则

aaxx 四舍五入得到,则从首个非零数字起直到最后一个确定数字止都算作有效数字。通常“绝对误差 ↔ 小数位数”,“相对误差 ↔ 有效数字位数”。

有效数字与误差界的等价刻画(双向)

a=±0.a1a2an×10ka=\pm 0.a_1a_2\dots a_n\times 10^k 具有 nn 位有效数字,则存在绝对误差界与相对误差界满足

xa1210kn,xaa12101n|x-a| \le \tfrac{1}{2}\cdot 10^{k-n},\quad \left|\frac{x-a}{a}\right|\le \tfrac{1}{2}\cdot 10^{1-n}

反之,若某近似值满足上述相对误差界不等式,则它至少具有 nn 位有效数字。

函数计算的误差估计

一元函数:泰勒一阶传播

ffaa 附近二阶可导、xx 的近似为 aa,泰勒展开

f(x)=f(a)+f(a)(xa)+f’’(ξ)2(xa)2f(x)=f(a)+f’(a)(x-a)+\frac{f’’(\xi)}{2}(x-a)^2

据此得近似绝对误差近似相对误差(当 xa|x-a| 足够小):

f(x)f(a)f(a)xa,f(x)f(a)f(a)f(a)f(a)xa|f(x)-f(a)| \approx |f’(a)||x-a|,\quad \left|\frac{f(x)-f(a)}{f(a)}\right| \approx \left|\frac{f’(a)}{f(a)}\right||x-a|

严格界可由余项给出。

多元函数:线性化误差界

f(x1,,xn)f(x_1,\dots,x_n),当 xkx_k 的近似为 aka_k 时有一阶界

f(x)f(a)k=1nfxk(a)xkak|f(x)-f(a)| \le \sum_{k=1}^n \left|\frac{\partial f}{\partial x_k}(a)\right|\cdot |x_k-a_k|

这提供了将自变量误差向函数值误差传播的统一框架。

四则运算的常用估计(由多元线性化专门化)

  1. 加/减:

(x1±x2)(a1±a2)x1a1+x2a2|(x_1\pm x_2)-(a_1\pm a_2)| \le |x_1-a_1|+|x_2-a_2|

  1. 乘法(近似一阶):

x1x2a1a2a2x1a1+a1x2a2|x_1x_2-a_1a_2| \lesssim |a_2||x_1-a_1|+|a_1||x_2-a_2|

x1x2a1a2a1a2x1a1a1+x2a2a2\left|\frac{x_1x_2-a_1a_2}{a_1a_2}\right| \lesssim \left|\frac{x_1-a_1}{a_1}\right|+\left|\frac{x_2-a_2}{a_2}\right|

  1. 除法(a20a_2\neq 0):

x1/x2a1/a2a1/a2x1a1a1+x2a2a2\left|\frac{x_1/x_2-a_1/a_2}{a_1/a_2}\right| \lesssim \left|\frac{x_1-a_1}{a_1}\right|+\left|\frac{x_2-a_2}{a_2}\right|

由此看出,小数作除数或两个数相减会显著放大误差,计算时应避免。

数值方法的稳定性

定义与直觉

某数值方法若在计算过程中产生的舍入误差不会被迭代或运算结构放大到失控,则称其数值稳定;反之为不稳定。这一概念与“误差对初值的敏感性”密切相关。

典型示例(积分序列递推的两种公式)

对一列积分 InI_n,两种等价的递推法在有限精度下表现截然不同:一种递推逐步放大舍入误差,nn 次后误差可被放大约 5n5^n 倍(例如 n=7n=7 时为 78,12578{,}125);另一种递推则不放大误差,故为稳定算法。实际计算应选取后者。

避免误差危害的基本原则

避免有效数字损失

(1)防“大数吃小数”:对数量级差异很大的加法,先累加“小量”,再与“大量”相加,或进行分组重排,以避免小量被舍入淹没。

(2)避“相近数相减”:相减会放大相对误差并丢失有效数字,应通过代数恒等变换或等价重构规避。典型地,求一元二次方程根时,使用数值稳定的配方

x1=bsgn(b)b24ac2a,x2=ca,x1x_1=\frac{-b-\operatorname{sgn}(b)\sqrt{b^2-4ac}}{2a},\quad x_2=\frac{c}{a,x_1}

以避免 (b+b24ac)(-b+\sqrt{b^2-4ac}) 的灾难性抵消。

(3)避免小数作除数或大数作乘数:小除数会显著放大相对误差;同理,巨大的乘数会放大绝对误差。

减少运算次数(提效同样降误差)

(1)多项式求值用秦九韶(Horner)法:把

pn(x)=a0+a1x++anxnp_n(x)=a_0+a_1x+\cdots+a_nx^n

改写为嵌套递推形式,乘法次数从约 2n12n-1 降为 nn,既省时又更稳定。

(2)选用更快收敛的等价级数:如计算 ln2\ln 2,选用在工作点收敛更快的交错级数/变形,可在给定精度下显著减少项数,从而降低累计截断与舍入误差。