条件数与数值稳定性:浮点世界的信任边界

04-分解与数据应用 进阶 约 20 分钟 #条件数#数值稳定性#浮点误差#病态 更新 2026-10-02
当前状态:未学
本文基于模型知识整理(生成时未联网核对),关键结论建议对照 Trefethen & Bau Lecture 12–18 / Higham 复核。

一句话定义

条件数 $\kappa(A)=\sigma_{\max}/\sigma_{\min}$ 度量"输入的相对扰动被放大的倍率"——$\kappa$ 大(病态)时,浮点舍入或数据噪声都会让解面目全非;数值稳定算法(正交变换类)把放大控制为 $O(\kappa)$,不稳算法(正规方程/显式逆/Gram-Schmidt 朴素版)则放大到 $O(\kappa^2)$ 甚至更糟。

为什么重要

理论说"可解",浮点说"看你条件数脸色":回归系数符号翻转、协方差特征值为负、Cholesky 突然报错——十有八九是病态而非"算错"。识别病态症状、选择稳定算法、用正则化治疗,是从"会算"到"算得可信"的分界线。

前置知识

kp-014(正交变换)、kp-018(奇异值)、kp-010(显式逆的警告)。

核心概念

  • 条件数:$\kappa(A)=\frac{\sigma_{\max}}{\sigma_{\min}}$(≥1;正交阵=1 最健康);解方程的相对误差界:$\frac{\|\delta x\|}{\|x\|}\lesssim \kappa(A)\frac{\|\delta b\|}{\|b\|}$。
  • 病态的几何:列(或椭球)几乎共线/极扁——信息方向高度重叠,一点点噪声就分不清各列贡献(多重共线性的数值表述)。
  • 算法 vs 问题:问题病态(κ 大,换任何算法都难);算法不稳(把 κ 的放大再乘一遍)——两层分开诊断。
  • 稳定构件:Householder QR、SVD、Cholesky(PD 时)——正交/保结构变换;不稳定构件:显式求逆、朴素 Gram-Schmidt、正规方程($\kappa^2$)。
  • 治疗:列标准化(量纲统一)、正则化(岭回归 $+\lambda I$ 强制正定并压低 κ,kp-030)、截断 SVD(丢弃噪声方向,kp-020)、更大精度(最后手段)。

原理与机制

为什么 κ 平方出现在正规方程:正规方程把问题变成 $A^\top A$,其条件数 $\kappa(A^\top A)=\kappa(A)^2$——平方后的病态直接印在解的误差上。κ=10⁸(不算罕见)时正规方程有效精度只剩 10⁻⁸·10⁸=1 位数——"公式对但结果全错"的机制。

为什么正交变换免疫:$Q$ 乘法保范数(kp-014)——舍入误差不因 Q 而放大;QR/SVD 全程只用正交变换+少量三角运算,误差增长温和且可证(后向稳定:算出的是"邻近问题的精确解")。

如何诊断:np.linalg.cond(A);间接症状——解对微小数据改动剧烈变化、$A^\top A$ 对角元跨好几个数量级、Cholesky 遇非正定。诊断后治疗排序:先查数据(标准化/去冗余),再正则化,最后才怀疑算法。

图示

κ(A) = σ_max/σ_min     放大倍率
解方程误差 ≤ κ·(输入相对误差)     稳定算法
正规方程/显式逆: ≤ κ²·(输入相对误差)    平方税
治疗: 标准化 → 正则化(+λI) → 截断SVD → (降维 kp-021)
警戒线: κ > 1/√机器精度 ≈ 10⁸ (double) 即结果基本不可信

直观类比

条件数像"传话游戏的房间安静度":安静房间(κ≈1)话传十排不走样;嘈杂房间(κ=10⁸)第一排咳一声,第十排听成另一句话。稳定算法是"大声清晰复述"(少放大噪音),不稳算法是"还加了混响"(平方放大)。

实例或案例

  • 多重共线性回归:两特征相关 0.999 → κ 巨大 → 系数正负号不稳定——岭回归的动机(kp-030)。
  • 协方差矩阵 Cholesky 失败:理论 PSD 实际数值负特征值——用特征值截断/抖动修复。
  • 浮点判断陷阱:det(A)==0 永远不该做可逆判据——用 κ 或 SVD 谱的相对大小。

常见误区

  • 误区一:"行列式接近 0 才病态"。行列式可被行缩放任意操纵;κ 才是尺度无关的病态度量。
  • 误区二:"算法选对了病态就没问题"。κ 是问题的属性——稳定算法给你"该问题能给出的最好答案",但答案本身可能仍不可信;治疗靠数据/正则化。
  • 误区三:"float64 就不会出错"。double 有 ~16 位精度,κ=10¹⁰ 时只剩 6 位——精度预算 = 机器精度 − log₁₀(κ)。

与其他知识点的关系

  • kp-010/019/020:显式逆/正规方程/截断伪逆的正反两面。
  • kp-014/018/032:正交算法的稳定性来源。
  • kp-021/030:数据侧的防治(标准化/正则化)。

自测题

  1. κ(A)=10¹⁰,double 精度(≈10⁻¹⁶)解 $Ax=b$ 还剩几位有效数字?

答:约 16−10=6 位(稳定算法下);若用正规方程则 16−20=负——完全不可信。

  1. 为什么 $(A^\top A)^{-1}$ 路线的条件数是 κ²?

答:$\sigma(A^\top A)=\sigma^2$ ⇒ $\kappa(A^\top A)=\sigma_{\max}^2/\sigma_{\min}^2=\kappa(A)^2$——平方税由构造直接带来。

  1. 三种"治疗病态"的手段与机理?

答:标准化(消除量纲假病态)、岭正则(+λI 抬高 σ_min 压低 κ,引入偏差换稳定)、截断 SVD(丢弃噪声方向)。

延伸阅读

  • Trefethen & Bau《Numerical Linear Algebra》Lecture 12–18(稳定性理论的教材级展开)。
  • Higham《Accuracy and Stability of Numerical Algorithms》(权威专著)。
  • Moler《Numerical Computing with MATLAB》条件数章节(免费在线)。