奇異值分解
由 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 是最常見、幾何上最透明的。
又稱
另見