科学仿真

条件数:你的答案离真值有多远

导读:Trefethen 第 12 讲:条件数不是矩阵的毛病,而是问题本身的属性。它回答一个问题——数据扰动会被放大多少倍。

定义与直觉

相对条件数 $\kappa = \|A\|\|A^{-1}\|$:输入的相对扰动最多被放大 $\kappa$ 倍传到输出。$\kappa = 10^k$ 意味着大约丢失 $k$ 位有效数字。

条件数是问题的属性,算法是「向后稳定」还是「不稳定」是算法的属性。二者相乘才决定你实际看到的误差——把两者混为一谈是数值分析第一大误区。

病态的典型来源

离散第一类积分方程、差分逼近微分、过密采样的多项式拟合——这些「光滑化/紧凑化」问题天然病态。出路不是更precise的算法,而是正则化:Tikhonov、截断 SVD。

本站「反问题与 Tikhonov 正则化」文章给出了完整的工程案例。

preconditioning:治本的手术

preconditioner $M$ 使 $\kappa(MA) \ll \kappa(A)$:不完全分解、对角缩放、多重网格都是这个思想。好的 preconditioner 比换求解器更有效。

常见误区

  • 残差小就认为解准——残差小只说明向后误差小,向前误差还要乘条件数。
  • 用双精度弥补病态:条件数 $10^{16}$ 时双精度也无济于事。

吃透自检

  • 能陈述条件数定义并估算有效数字损失
  • 能区分问题病态与算法不稳定
  • 能给出一个正则化处理的完整算例

← 科学仿真 书目精读列表 经典研读