部分ピボット選択付きLU分解とは
LU分解とは、正方行列 \(A\) を下三角行列 \(L\)(対角成分はすべて1)と上三角行列 \(U\) の積に分解する手法です。部分ピボット選択(行ピボット)を用いると、行を入れ替えたことを記録する行交換ベクトル \(P\) も同時に得られ、\(P \cdot A = L \cdot U\) が成り立ちます。ピボット選択では、各ステップでピボットの絶対値が最大となる行を選んで入れ替えるため、ゼロ除算を防ぎ、数値計算の安定性が大きく向上します。これは純粋な線形代数の理論であり、国や地域を問わず同じように適用できます。
計算機の使い方
まず行列のサイズ \(n\)(2〜5)を選び、正方行列の成分を1行ずつ入力します。次に表示する有効桁数を指定してください。計算ボタンを押すと、\(L\)、\(U\)、行交換ベクトル \(P\)(0始まり)、そして行列式が表示されます。選択したサイズを超えるセルの値は無視されます。
アルゴリズム
各列 \(k\) について、\(p \geq k\) の範囲で \(|M[p][k]|\) が最大となる行 \(p\) を探し、その行を \(k\) 行目と入れ替えます。次に \(k\) 行より下の各行 \(i\) について乗数 \(\text{factor} = M[i][k] / M[k][k]\) を計算し、それを下三角部分に格納したうえで、残りの成分を \(M[i][j] \mathrel{-}= \text{factor} \cdot M[k][j]\) と更新します。すべての列の処理が終わると、\(M\) の対角成分を含まない狭義の下三角部分(対角は1)が \(L\)、対角成分を含む上三角部分が \(U\) になります。行列式は、置換の符号と \(U\) の対角成分の積を掛け合わせた値に等しくなります。$$\det(A) = \operatorname{sign}(P) \prod_{i} U_{ii}$$
計算例
\(A = [[2,1,1],[4,-6,0],[-2,7,2]]\) の場合、最初のピボットは1行目(\(|4|\) が最大)なので、\(P\) は \((1,0,2)\) となります。消去を進めると \(L = [[1,0,0],[0.5,1,0],[-0.5,1,1]]\)、\(U = [[4,-6,0],[0,4,1],[0,0,1]]\) が得られます。行の入れ替えが1回なので符号は \(-1\) となり、$$\det(A) = -1 \times (4 \cdot 4 \cdot 1) = -16$$ です。
よくある質問
なぜ \(L \cdot U\) が元の行列 \(A\) と一致しないのですか? ピボット選択を行っているため、\(L \cdot U\) は \(A\) の行を \(P\) に従って並べ替えた行列と一致します。先に \(A\) の行を \(P\) で並べ替えてから \(L \cdot U\) を計算すれば一致します。
行列が特異(正則でない)場合はどうなりますか? \(U\) の対角成分にゼロが現れ、行列式は \(0\) になります。それでも分解結果は表示されます。
ピボットベクトルは0始まりですか? はい。\(P[i]\) は、最終的に \(i\) 行目に来た \(A\) の元の行番号を表します。