MCPで接続 →

計算を入力してください

正方行列の成分を1行ずつ入力してください。サイズ n を超える未使用のセルは無視されます。

公式

公式: 部分ピボット選択付きLU分解計算機
Show calculation steps (1)
  1. Determinant

    Determinant: 部分ピボット選択付きLU分解計算機

    Determinant from the permutation sign and the product of U's diagonal entries.

広告

結果

Determinant det(A) = sign(P) × product of U diagonal
-16

下三角行列 L

1 0 0
0.5 1 0
-0.5 1 1

上三角行列 U

4 -6 0
0 4 1
0 0 1

行交換ベクトル P(0始まり)

P = ( 1, 0, 2 )

Because of partial pivoting, L·U equals the 行を並べ替えた matrix A (reorder A's rows by P first), so P·A = L·U. A naive L·U product will not reproduce the original A unless you apply the permutation P.

計算方法 部分ピボット選択(行ピボット)付きドゥーリトル法によるLU分解
行列のサイズ 3 × 3

部分ピボット選択付きLU分解とは

LU分解とは、正方行列 \(A\) を下三角行列 \(L\)(対角成分はすべて1)と上三角行列 \(U\) の積に分解する手法です。部分ピボット選択(行ピボット)を用いると、行を入れ替えたことを記録する行交換ベクトル \(P\) も同時に得られ、\(P \cdot A = L \cdot U\) が成り立ちます。ピボット選択では、各ステップでピボットの絶対値が最大となる行を選んで入れ替えるため、ゼロ除算を防ぎ、数値計算の安定性が大きく向上します。これは純粋な線形代数の理論であり、国や地域を問わず同じように適用できます。

行列 P×A が L×U に等しく、L が下三角、U が上三角であることを示す図
部分ピボット選択は、置換行列 \(P \cdot A\) を下三角行列 \(L\) と上三角行列 \(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\) の元の行番号を表します。

最終更新: