行列のコレスキー分解の計算方法


本日は行列のコレスキー分解の概要と、その計算方法について紹介したいと思います。

行列のコレスキー分解は、適用可能な行列は限られますが、連立一次方程式を高速に解いたり、高速に逆行列を算出することにおいて有用な役割を果たします。

コレスキー分解とは

行列のコレスキー分解とは、ある正定値エルミート行列Aを、下三角行列Lと、その随伴行列Lとの積に分解することを指します。式で表すと以下の通りです。

A=LL

正定値エルミート行列Aは、その行列要素が全て実数値のとき、実対称行列となります。すなわち、コレスキー分解を行列成分が全て実数の行列に対して定義する場合は、ある実対称行列Aを下三角行列Lと、その転置行列LTとの積に分解することであると言えます。

A=LLT

実応用では行列要素を全て実数値で扱うことも多いことから,以後の説明は実対称行列Aを対象に説明したいと思います。

実対称行列へのコレスキー分解の概要

ある正方行列AがLU分解可能であり、かつ実対称行列であるとき、コレスキー分解を行うことが可能です。下三角行列
L=(l11000l21l2200l31l32l330ln1ln2ln3lnn)

と、その転置行列

LT=(l11l21l31ln10l22l32ln200l33ln3000lnn)

を用いて以下のように表現することができます。

A=LLT

この分解を行列のコレスキー分解と呼びます。

コレスキー分解が適用可能な行列は限定されるものの、LU分解と比較して下三角行列Lのみを算出すればよいため、より少ない計算量で分解が可能となります。下三角行列Lを算出後は、LU分解と同様に前進代入と後退代入の手順で連立1次方程式を高速に解くことができます。そのため連立一次方程式を高速に解く場合等において、コレスキー分解が役に立ちます。

具体的な計算で見るコレスキー分解の計算方法

3×3の行列のコレスキー分解を具体的に計算する例を以下に紹介します。以下の3×3正方行列Aのコレスキー分解を考えます。

A=(4262556514)=(l1100l21l220l31l32l33)(l11l21l310l22l3200l33)

=(l112l11l21l11l31l11l21l212+l222l21l31+l22l32l11l31l21l31+l22l32l312+l322+l332)

すなわち、以下の6本の方程式が成り立ちます。

4=l112

2=l11l21

6=l11l31

5=l212+l222

5=l21l31+l22l32

14=l312+l322+l332

6個の変数に対して6本の方程式が成立するため、この式を解くことでコレスキー分解が可能です。

ただし、4=l112等の式から示されるように、対角要素の正負については確定しない(コレスキー分解の解は一意ではない)点に注意してください。

ただし、「対角成分を正にする」ことを規定すれば、コレスキー分解の解は一意に定まります。対角成分を正とすることとして上記の方程式を解くと、以下の解が得られます。

A=(4262556514)=(200120312)(213021002)

スポンサーリンク

シェアする

フォローする