奇异值分解
由 SVD 得到条件数
当你在计算机上解 Ax = b 时,数据 b 带着小误差,A 也是如此。条件数衡量这些小的输入误差在答案 x 中可能被放大得有多糟。它是相对误差的放大因子:良态矩阵温和地传递误差,病态矩阵则灾难性地将其放大。
SVD 给出最干净的定义:kappa(A) = sigma_max / sigma_min,即最大奇异值与最小非零奇异值之比。映射沿某些方向拉伸 sigma_max 倍,又把另一些方向压缩到 sigma_min;求逆则反其道而行,于是微小的 sigma_min 变成巨大的 1/sigma_min,疯狂放大落在那个被压缩方向上的任何误差分量。
看两个极端。kappa = 1 是完美的:正交矩阵所有奇异值相等、条件数为 1,故绝不放大误差。当 sigma_min 趋于零时,kappa 飙向无穷,矩阵趋于奇异——解变得无可救药地敏感。一条粗略法则:若 kappa 约为 10^k,解这个系统时你大约会损失 k 位精度。
奇异值也澄清了有限精度下秩的含义。精确的秩计的是非零奇异值,但数值上一个 10^{-15} 的奇异值与噪声无从分辨。数值秩计的是高于某个合理阈值的奇异值,而条件数告诉你画这条线时有多大把握——诸 sigma 间的巨大间隙意味着干净的切割,平滑的衰减则意味着秩确实含糊不清。
kappa(A) = sigma_max / sigma_min ; kappa = 1 (orthogonal), kappa -> infinity as A -> singular
奇异值的跨度决定误差放大;奇异值相等意味着完美的条件。
这是 2-范数条件数。其他范数给出其他条件数,但 SVD 形式 sigma_max/sigma_min 是最常见、几何上最透明的。
又称
另见