矩陣分解
選擇合適的分解
可用的分解有十來種,真正實用的本領是把工具與矩陣、與任務相匹配。兩個問題幾乎決定一切:矩陣有什麼結構(一般、對稱、正定、稀疏),以及你想拿它做什麼(解一個或多個系統、做最小二乘擬合、求特徵值、算矩陣函數)?
對解方陣系統 A x = b:一般矩陣用帶部分選主元的 LU;對稱正定矩陣應用 Cholesky(代價減半、無需選主元);對稱不定矩陣用帶 Bunch-Kaufman 選主元的 LDL^T。若矩陣大且稀疏,先做減少填充的重排序,再用上述方法的稀疏版本。
對高瘦矩陣的最小二乘 min ||A x - b||:用基於 Householder 的 QR,它避免了正規方程那樣把條件數平方;當矩陣秩虧或你需要最穩健的答案時,用 SVD。對一般矩陣求特徵值,算 Schur 分解;對對稱矩陣,用正交的譜分解,它既精確又穩定。
兩條貫通各處的規則。若矩陣在兩次求解之間只改動一點點,不要重新分解;更新現有分解(Sherman-Morrison-Woodbury,或 n^2 的 QR/Cholesky 更新)。並且始終權衡條件數:良態問題可容忍更廉價的工具,而病態問題即便有更快的方法形式上適用,也可能非用 SVD 不可。
structure (symmetric? PD? sparse?) x task (solve? least-squares? eigen?) -> the factorization
讓矩陣的結構與你的目標——而非習慣——來挑選分解。
速查圖:一般求解 -> LU;對稱正定 -> Cholesky;對稱不定 -> LDL^T;最小二乘 -> QR(秩虧則用 SVD);特徵值 -> Schur(對稱則用譜分解)。
又稱
另見