行列の条件数とは?
条件数κ(A)は、連立一次方程式 \(Ax = b\) の解が、データのわずかな変化(誤差)に対してどれだけ敏感に反応するかを表す指標です。条件数が小さい(1に近い)ほど、その行列は「良条件(well-conditioned)」で数値的に安定しています。逆に条件数が大きいと「悪条件(ill-conditioned)」であり、入力のごくわずかな誤差が出力に大きな誤差をもたらす可能性があります。スペクトル条件数(2ノルム条件数)は、最大特異値と最小特異値の比に等しくなります。すなわち \(\kappa_2(A) = \sigma_{\max} / \sigma_{\min}\) です。
この計算ツールの使い方
2×2行列 A の4つの成分(\(a_{11}, a_{12}, a_{21}, a_{22}\))を入力すると、2ノルム条件数に加えて、2つの特異値と行列式が表示されます。最小特異値が0の場合、その行列は特異(正則でない)であり、条件数は無限大になります。
計算式の解説
任意の行列について、条件数は \(\kappa(A) = \|A\| \cdot \|A^{-1}\|\) で定義されます。2ノルムを用いると \(\|A\| = \sigma_{\max}\)、\(\|A^{-1}\| = 1/\sigma_{\min}\) となり、\(\kappa_2(A) = \sigma_{\max}/\sigma_{\min}\) が得られます。特異値は \(A^{T}A\) の固有値の平方根です。2×2行列の場合は \(M = A^{T}A\) を作り、その固有値を $$\lambda = \frac{\operatorname{tr} \pm \sqrt{\operatorname{tr}^2 - 4\cdot\det}}{2}$$ で求め、\(\sigma = \sqrt{\lambda}\) とします。
計算例
\(A = \begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix}\) とします。このとき \(A^{T}A = \begin{bmatrix} 4 & 0 \\ 0 & 1 \end{bmatrix}\) となり、その固有値は 4 と 1 です。したがって特異値は \(\sigma_{\max} = 2\)、\(\sigma_{\min} = 1\) となり、$$\kappa_2(A) = \frac{2}{1} = 2$$ です。この行列は非常に良条件であることがわかります。
よくある質問
「良い」条件数とはどのくらいの値ですか? 1に近い値が理想的です。おおまかな目安として、\(\log_{10}(\kappa)\) は、その連立方程式を解いたときに失われる可能性のある有効桁数の概数を示します。
条件数が無限大になるのはなぜですか? その行列が特異(行列式が0)だからです。このとき \(\sigma_{\min} = 0\) となり、逆行列 \(A^{-1}\) が存在しません。
どのノルムを使っていますか? 特異値に基づく2ノルム(スペクトル)条件数を使用しています。他のノルム(1ノルム、∞ノルム)では異なる数値になることがあります。