連立一次方程式
数値計算で最も基本的な問題。
解き方#
| 方法 | 計算量 | 適する場面 |
|---|---|---|
| LU 分解 | 一般の密行列 | |
| コレスキー分解 | 対称正定値。約半分の手間 | |
| QR 分解 | 最小二乗、数値的に安定 | |
| 共役勾配法 | /反復 | 大規模疎行列、対称正定値 |
逆行列を作らない#
python
np.linalg.solve(A, b) # これ
np.linalg.inv(A) @ b # これは避けるピボット選択#
LU 分解では、対角成分が 0 に近いと桁落ちする。 行を入れ替えて絶対値の大きい要素を対角に持ってくる(部分ピボット選択)ことで、 安定性が確保される。
これを省くと、理論上は解けても数値的に破綻する。 アルゴリズムの安定性が実装の細部で決まる典型例。
反復法#
が を超えると直接法は使えない。 共役勾配法などの反復法では、 行列を陽に持たず の計算だけできればよい(matrix-free)。 収束の速さは条件数に依存し、 前処理 (preconditioning) で改善する。
参考文献#
- Lloyd N. Trefethen, David Bau III. Numerical Linear Algebra. SIAM, 1997. https://doi.org/10.1137/1.9780898719574
- Gene H. Golub, Charles F. Van Loan. Matrix Computations, 4th ed. Johns Hopkins University Press, 2013. https://www.press.jhu.edu/books/title/10678/matrix-computations