MINIBLOG

Blog Note Tags Links About
Home Search
Mar 8, 2026
miniyuan

误差分析


数值分析基本概念

一般形式

数值计算问题可统一表述为:

F(x,d)=0F(x, d) = 0F(x,d)=0

其中:

  • xxx:待求解(如方程的根、微分方程的解)
  • ddd:问题参数(如系数、初值、边界条件)
  • FFF:描述解与参数关系的函数

根据已知量与未知量的组合,可分为三类:

类型已知未知应用示例
直接问题F,dF, dF,dxxx求解线性方程组 Ax=bAx=bAx=b
反问题F,xF, xF,xddd由测量数据反推材料参数
识别问题x,dx, dx,dFFF从实验数据构建物理模型

而数值方法就是离散化求解上述问题的过程,可以理解为使用近似问题序列 Fn(xn,dn)=0F_n(x_n, d_n) = 0Fn​(xn​,dn​)=0 求近似解 xnx_nxn​。 nnn 通常表示离散规模(如迭代次数、网格加密度)。

我们称 xn,dn,Fnx_n, d_n, F_nxn​,dn​,Fn​ 为近似解、近似参数、近似函数。 相对地,强调原问题的 x,d,Fx, d, Fx,d,F 为准确解、准确参数、准确函数。

数值问题的适定性

适定性(Well-Posedness)。

定义:数值计算问题是适定的,当且仅当满足:

  1. 解存在:对给定 ddd,至少存在一个解 xxx
  2. 解唯一:解在解空间中唯一
  3. 解关于参数连续: 参数 ddd 的微小扰动 δd\delta dδd 仅引起解 xxx 的微小变化 δx\delta xδx。 具体来说,设问题扰动为 F(x+δx,d+δd)=0F(x + \delta x, d + \delta d) = 0F(x+δx,d+δd)=0,则对任意 ddd, 存在 η0>0\eta_0 > 0η0​>0 和 K0>0K_0 > 0K0​>0,使得当 ∥δd∥≤η0\|\delta d\| \leq \eta_0∥δd∥≤η0​ 时: ∥δx∥≤K0∥δd∥\|\delta x\| \leq K_{0} \|\delta d\|∥δx∥≤K0​∥δd∥

注:不适定问题在反问题中极为常见,需通过正则化等技术转化为适定问题。

数值方法的一致性

一致性(Consistency)。

定义:对近似问题序列 Fn(xn,dn)=0F_n(x_n, d_n) = 0Fn​(xn​,dn​)=0,若

Fn(x,d)−F(x,d)→0(n→∞)F_n(x, d) - F(x, d) \to 0 \quad (n \to \infty)Fn​(x,d)−F(x,d)→0(n→∞)

其中 xxx 是原问题的准确解,则称该序列一致。

数值方法的稳定性

稳定性(Stability)。

定义:对近似问题序列 Fn(xn,dn)=0F_n(x_n, d_n) = 0Fn​(xn​,dn​)=0,若对任意 dnd_ndn​, 存在 η0>0\eta_0 > 0η0​>0 和 K0>0K_0 > 0K0​>0,使得当 ∥δdn∥≤η0\|\delta d_n\| \leq \eta_0∥δdn​∥≤η0​ 时:

∥δxn∥≤K0∥δdn∥\|\delta x_n\| \leq K_{0} \|\delta d_n\|∥δxn​∥≤K0​∥δdn​∥

则称该序列稳定。

注:有时使用相同的数学关系、不同的计算方向会导致截然不同的数值稳定性。

数值方法的收敛性

收敛性(Convergence)。

定义:对近似问题序列 Fn(xn,dn)=0F_n(x_n, d_n) = 0Fn​(xn​,dn​)=0,若对任意 ε>0\varepsilon > 0ε>0, 存在 n0∈Nn_0 \in \mathbb Nn0​∈N 和 δ>0\delta > 0δ>0,使得当 n>n0n > n_0n>n0​ 且 ∥δdn∥≤δ\|\delta d_n\| \leq \delta∥δdn​∥≤δ 时:

∥x(d)−xn(d+δdn)∥≤ε\|x(d) - x_n(d + \delta d_n)\| \leq \varepsilon∥x(d)−xn​(d+δdn​)∥≤ε

则称该序列收敛。

总结

  1. 数值问题的适定性就是数值问题的解存在唯一,且关于参数连续。
  2. 数值方法的一致性就是近似函数接近准确函数。
  3. 数值方法的稳定性就是近似解关于近似参数连续。
  4. 数值方法的收敛性就是近似解接近准确解。

Lax-Richtmyer 定理:

对满足 Consistency\text{Consistency}Consistency 的数值方法,有:

Stability⇔Convergence\text{Stability} \Leftrightarrow \text{Convergence}Stability⇔Convergence

注:由于收敛性涉及到准确解,故一般不好判断。该定理可将收敛性转化为稳定性进行判断。


误差

误差的来源

类型定义例子改进方式
模型误差数学模型的差异用球体近似地球计算表面积改进物理建模
观测误差参数测量不精确地球半径的测量误差改进仪器精度
截断误差无限过程截断为有限步骤Taylor 展开舍弃高阶项、数值积分离散化改进算法阶数
舍入误差计算机有限精度表示实数π,2\pi, \sqrt{2}π,2​ 的浮点近似改用高精度计算

例: 单摆运动方程 Ld2ϕdt2+gsin⁡ϕ+μdϕdt=0\displaystyle L\frac{d^2\phi}{dt^2} + g\sin\phi + \mu\frac{d\phi}{dt} = 0Ldt2d2ϕ​+gsinϕ+μdtdϕ​=0

  • 模型误差:用常数 μ\muμ 简化摩擦模型
  • 截断误差:小角度近似 sin⁡ϕ≈ϕ\sin\phi \approx \phisinϕ≈ϕ
  • 观测误差:L,g,μL, g, \muL,g,μ 的测量误差

绝对误差与相对误差

定义:

  • 绝对误差: e(x∗)=x−x∗e(x^*) = x - x^*e(x∗)=x−x∗ 有时也简称为误差。
  • 绝对误差限: ∣e(x∗)∣≤ε|e(x^*)| \leq \varepsilon∣e(x∗)∣≤ε 其中绝对误差绝对值的上界 ε\varepsilonε 即为绝对误差限。
  • 相对误差: er(x∗)=e(x∗)x≈e(x∗)x∗e_r(x^*) = \frac{e(x^*)}{x} \approx \frac{e(x^*)}{x^*}er​(x∗)=xe(x∗)​≈x∗e(x∗)​
  • 相对误差限: ∣er(x∗)∣≤εr=ε∣x∗∣|e_r(x^*)| \leq \varepsilon_r = \frac{\varepsilon}{|x^*|}∣er​(x∗)∣≤εr​=∣x∗∣ε​ 其中相对误差绝对值的上界 εr\varepsilon_rεr​ 即为相对误差限。

注:

  • 绝对误差反映误差的绝对大小,相对误差反映误差的相对程度,所以相对误差更加本质。
  • 严格上讲我们求相对误差(限)时应该写成 er≤vale_r \le \text{val}er​≤val,不过不严格区分了。

误差传播

设 y=f(x)=f(x1,…,xn)y = f(x) = f(x_1, \dots, x_n)y=f(x)=f(x1​,…,xn​),近似参数 x∗=(x1,…,xn)x^* = (x_1, \dots, x_n)x∗=(x1​,…,xn​),对应的近似解 y∗=f(x∗)y^* = f(x^*)y∗=f(x∗)。 我们可用下式估算 x∗x^*x∗ 的误差造成 y∗y^*y∗ 的误差:

  • 绝对误差传播: e(y∗)≈∑i=1n∂f∂xi(x∗)e(xi∗)=∇f(x∗)⊤e(x∗)\begin{aligned} e(y^*) &\approx \sum_{i=1}^n \frac{\partial f}{\partial x_i}(x^*) e(x_i^*) \\ &= \nabla f(x^*)^\top \mathbf{e}(x^*) \end{aligned}e(y∗)​≈i=1∑n​∂xi​∂f​(x∗)e(xi∗​)=∇f(x∗)⊤e(x∗)​
  • 相对误差传播: er(y∗)≈∑i=1n∂f∂xi(x∗)xi∗y∗er(xi∗)=∇ln⁡f(x∗)⊤er(x∗)\begin{aligned} e_r(y^*) &\approx \sum_{i=1}^n \frac{\partial f}{\partial x_i}(x^*) \frac{x_i^*}{y^*} e_r(x_i^*) \\ &= \nabla_{\ln} f(x^*)^\top \mathbf{e}_r(x^*) \end{aligned}er​(y∗)​≈i=1∑n​∂xi​∂f​(x∗)y∗xi∗​​er​(xi∗​)=∇ln​f(x∗)⊤er​(x∗)​ 其中 ∇ln⁡f(x)∈Rn,(∇ln⁡f(x))i=∂ln⁡f∂ln⁡xi(x)=xif(x)∂f∂xi(x)\nabla_{\ln} f(x) \in \mathbb{R}^n, \quad \left( \nabla_{\ln} f(x) \right)_i = \frac{\partial \ln f}{\partial \ln x_i}(x) = \frac{x_i}{f(x)} \frac{\partial f}{\partial x_i}(x)∇ln​f(x)∈Rn,(∇ln​f(x))i​=∂lnxi​∂lnf​(x)=f(x)xi​​∂xi​∂f​(x)

注:本质上是因为 er(y∗)=y−y∗y∗≈Δ(ln⁡y)e_r(y^*) = \frac{y - y^*}{y^*} \approx \Delta (\ln y)er​(y∗)=y∗y−y∗​≈Δ(lny)

基本运算的误差传播:

运算绝对误差相对误差
加减法 x1±x2x_1 \pm x_2x1​±x2​e(x1)±e(x2)e(x_1) \pm e(x_2)e(x1​)±e(x2​)x1x1±x2er(x1)±x2x1±x2er(x2)\displaystyle \frac{x_1}{x_1\pm x_2}e_r(x_1) \pm \frac{x_2}{x_1\pm x_2}e_r(x_2)x1​±x2​x1​​er​(x1​)±x1​±x2​x2​​er​(x2​)
乘法 x1x2x_1x_2x1​x2​x2e(x1)+x1e(x2)x_2e(x_1) + x_1e(x_2)x2​e(x1​)+x1​e(x2​)er(x1)+er(x2)e_r(x_1) + e_r(x_2)er​(x1​)+er​(x2​)
除法 x1/x2x_1/x_2x1​/x2​x2e(x1)−x1e(x2)x22\displaystyle \frac{x_2e(x_1) - x_1e(x_2)}{x_2^2}x22​x2​e(x1​)−x1​e(x2​)​er(x1)−er(x2)e_r(x_1) - e_r(x_2)er​(x1​)−er​(x2​)
幂函数 xnx^nxnnxn−1e(x)n x^{n-1} e(x)nxn−1e(x)ner(x)n e_r(x)ner​(x)

注:有时先进行一些恒等变形再计算可以减少误差。

先验与后验误差分析

先验误差分析

在算法运行之前,仅根据问题的参数 ddd、函数 FFF以及解 xxx 的假设性质,对误差上界进行的理论估算。

  1. 向前分析:

    估计对参数扰动 δd\delta dδd 引起的误差:

    ∥x−xn∥≤C(d,n,Properties(x))\|x - x_n\| \le \mathcal{C}(d, n, \text{Properties}(x))∥x−xn​∥≤C(d,n,Properties(x))

    其中 C\mathcal{C}C 是不依赖于具体计算结果的常数或函数。

  2. 向后分析:

    将近似解 xnx_nxn​ 视为某个带有扰动的输入 d+δdd + \delta dd+δd 对应的精确解。估计 δd\delta dδd 的大小:

    ηback=min⁡{∥δd∥∣F(xn,d+δd)=0}\eta_{\text{back}} = \min \{ \|\delta d\| \mid F(x_n, d+\delta d) = 0 \}ηback​=min{∥δd∥∣F(xn​,d+δd)=0}

后验误差分析

在算法运行结束或运行中,进一步利用计算结果,如数值解 xnx_nxn​,对实际误差进行的定量评估。

也即:

∥x−xn∥≤C⋅η(xn,d)\|x - x_n\| \le C \cdot \eta(x_n, d)∥x−xn​∥≤C⋅η(xn​,d)

其中 CCC 是常数,η\etaη 是基于 xnx_nxn​ 构造的误差估计子。

注: 后验误差分析是自适应算法(Adaptive Algorithms)的灵魂。 若 η(xn,d)>εtol\eta(x_n, d) > \varepsilon_{tol}η(xn​,d)>εtol​,则算法可以自动调整参数重新计算。


有效数字与浮点数表示

有效数字

定义: x∗x^*x∗ 若可规格化为以下浮点数

±0.α1α2⋯αn×10m,α1≠0\pm 0.\alpha_1\alpha_2\cdots\alpha_n \times 10^m, \quad \alpha_1 \neq 0±0.α1​α2​⋯αn​×10m,α1​=0

其中写出的数字都是准确的,则称 x∗x^*x∗ 有 nnn 位有效数字。

等价定义: x∗x^*x∗ 的绝对误差限若满足

∣e(x∗)∣≤12×10m−n|e(x^*)| \le \frac{1}{2} \times 10^{m-n}∣e(x∗)∣≤21​×10m−n

其中 mmm 为 x∗x^*x∗ 规格化表示中的指数,则称 x∗x^*x∗ 有 nnn 位有效数字。

性质:

  • 绝对误差限:

    ∣e(x∗)∣≤12×10m−n|e(x^*)| \le \frac{1}{2} \times 10^{m-n}∣e(x∗)∣≤21​×10m−n
  • 相对误差限:

    ∣er(x∗)∣≤1/2×10m−nα1×10m−1=12α1×10−(n−1)|e_r(x^*)| \le \frac{1/2 \times 10^{m-n}}{\alpha_1 \times 10^{m-1}} = \frac{1}{2\alpha_1} \times 10^{-(n-1)}∣er​(x∗)∣≤α1​×10m−11/2×10m−n​=2α1​1​×10−(n−1)
  • 相对误差限反推有效数字:

    若 x∗≠0x^* \ne 0x∗=0 的相对误差限满足:

    ∣er(x∗)∣≤12(α1+1)×10−(n−1)|e_r(x^*)| \leq \frac{1}{2(\alpha_1+1)} \times 10^{-(n-1)}∣er​(x∗)∣≤2(α1​+1)1​×10−(n−1)

    则 x∗x^*x∗ 至少有 nnn 位有效数字。

    证明:用等价定义以及 ∣e(x∗)∣=∣er(x∗)∣⋅∣x∗∣|e(x^*)| = |e_r(x^*)| \cdot |x^*|∣e(x∗)∣=∣er​(x∗)∣⋅∣x∗∣。

注:精度(Precision) ≠\ne= 准确度(Accuracy)。精度使用有效数字位数定义,准确度使用准确的有效数字位数定义。

IEEE-754 标准

学 ICS 去吧。


数值计算中的关键注意事项

  1. 避免相近数相减
  2. 防止量级悬殊数加减
  3. 优化计算步骤,即降低复杂度,也避免误差积累
  4. 选择合适精度类型,进行数值边界分析与类型安全检查
  5. 重视累积误差
目录
  • 数值分析基本概念
    • 一般形式
    • 数值问题的适定性
    • 数值方法的一致性
    • 数值方法的稳定性
    • 数值方法的收敛性
    • 总结
  • 误差
    • 误差的来源
    • 绝对误差与相对误差
    • 误差传播
    • 先验与后验误差分析
      • 先验误差分析
      • 后验误差分析
  • 有效数字与浮点数表示
    • 有效数字
    • IEEE-754 标准
  • 数值计算中的关键注意事项
© 2026 miniyuan. All rights reserved.
Go to miniyuan's GitHub repo