LU分解を実装してみた
今日は連立方程式の解法などに用いられるLU分解についてです。
LU分解とは
とある正方行列Aに対して以下のような等式が成り立つ場合を考えます。
このとき A を L(下三角行列)とU(上三角行列)に分解すると三角化された行列の計算を2回行えば 解を得られることになるので計算が簡単になるというもの。
LU分解のメリット
では一体どう簡単になるかという話ですが
と変形すると結局三角行列の方程式を2つ計算すればxが求められることになります。例えば二元連立方程式の場合
となるため、自明なものから順に計算すれば簡単に求めることができます。
LU分解の過程について
のように分解して計算すると、恒等式の関係より
が成り立ちます。ここで を新たにとすることで、同様の操作を繰り返すことができます。つまりn次正方行列を仮定するとn回繰り返すことで全てLU成分が分かることになります。
計算量について
LU分解までの処理はO(n3)になるため、一度だけ方程式を解く場合はガウスの消去法などと変わりありません。 ガウスの消去法は右辺も処理する必要がありますが、LU分解は一度分解した結果を使いまわせるのがメリットです。 右辺の値を変更して何度もLUを再利用する場合に利点がありそうです。
まとめ
LU分解を自前で実装する方法とメリットについて説明しました。 次回は単体法について説明したいと思います。