【保存版】LU分解とは?数式・手順・活用例まで徹底解説!

線形代数の中でも、特に応用範囲が広いのが「LU分解(LU Decomposition)」です。
数値計算やプログラミング、物理シミュレーションにおいても頻繁に登場します。

この記事では、LU分解の基本から実際の計算手順、活用例までを丁寧に解説します。
数学が苦手な人にも分かりやすくまとめているので、ぜひ最後まで読んでみてください📘


LU分解とは?

LU分解とは、ある正方行列Aを、下三角行列Lと上三角行列Uの積に分解することを言います。

数式で表すと、以下のようになります:

A=LUA = LU

  • L(Lower):下三角行列(対角成分は1)

  • U(Upper):上三角行列

この分解を行うことで、連立一次方程式の解法や逆行列の計算が効率的になります。


LU分解のメリットは?

🔸 連立一次方程式を高速に解ける!
一度LU分解しておけば、右辺が変わる複数の連立方程式にも素早く対応できます。

🔸 計算量が減る!
LU分解は、直接的な行列計算よりも計算量が少なく済むため、特に大規模データに強いのです。

🔸 再利用性が高い!
一度求めたLとUを何度も使い回すことができます👍


LU分解の手順(3×3の行列を例に)

行列A:

A=[231477−245]A = \begin{bmatrix} 2 & 3 & 1 \\ 4 & 7 & 7 \\ -2 & 4 & 5 \\ \end{bmatrix}

これをLU分解するステップは以下の通りです:


Step 1:初期化

まず、Lを単位行列で初期化し、Aの値を使ってUを求めていきます。


Step 2:Uの1行目をそのままコピー

U=[2310??0??]U = \begin{bmatrix} 2 & 3 & 1 \\ 0 & ? & ? \\ 0 & ? & ? \\ \end{bmatrix}


Step 3:Lの1列目を求める(下三角)

例:

L21=42=2,L31=−22=−1L_{21} = \frac{4}{2} = 2,\quad L_{31} = \frac{-2}{2} = -1


Step 4:Aの第2、第3行を更新して、Uの2行目を求める

(ガウス消去と似た流れ)

更新後の行列から同様にLとUの要素を順に求めていきます。


プログラミングでの実装例(Python)

LU分解はNumPyでも簡単に扱えます。

import numpy as np
from scipy.linalg import lu

A = np.array([[2, 3, 1], [4, 7, 7], [-2, 4, 5]])
P, L, U = lu(A)

print("L:\n", L)
print("U:\n", U)

ここではSciPyのlu()関数を使用しています。
実際には、ピボット行列Pも出力されるLU分解(PLU分解)になります。


LU分解の活用例

連立一次方程式の解法
LU分解後、Ly = b, 次に Ux = y と2回の三角行列解法で済みます。

逆行列の計算
LU分解しておけば、逆行列を求める際の計算がスムーズになります。

数値解析
ニュートン法、差分法、有限要素法などにも応用されています。


注意点:LU分解できない場合もある?

LU分解はすべての行列で可能というわけではありません
例えば、0で始まる行列や、特異な行列(正則でない行列)では**行の入れ替え(ピボット操作)**が必要になります。

この場合、PLU分解(ピボット付きLU分解)を用いることで対応できます。


まとめ ✨

LU分解は、線形代数において非常に強力なツールです。

高速・再利用性・効率性という3つの大きなメリットを持ち、実社会の多くの場面で活用されています。

数式は難しそうに見えても、手順はガウス消去法と似ているため、慣れれば誰でも使いこなせる技術です。

ぜひ、プログラミングにも活かしてみてください💻📊


ご希望があれば、LU分解のPythonコードの詳細解説記事や、LU分解の演習問題集付きブログも作成可能です📘お気軽にリクエストしてください!