同じ係数行列で右辺だけ違う方程式を何度も解くとき、毎回消去をやり直す必要があるだろうか。
このページでできるようになること
消去の前処理を $LU$ 分解として保存し、複数の右辺へ再利用できるようになる。
同じ係数行列で右辺だけが異なる方程式を何度も解くとき、毎回消去法を最初から行うのは無駄です。LU分解は、消去の履歴を下三角行列に保存し、以後は二つの簡単な三角方程式へ分けます。
$$
A=\begin{pmatrix}
2&1&1\\
4&-1&0\\
-2&2&1
\end{pmatrix}
$$
を考えます。第一列を消去するため
$$
R_2\leftarrow R_2-2R_1,
\qquad
R_3\leftarrow R_3+R_1
$$
とすると
$$
\begin{pmatrix}
2&1&1\\
0&-3&-2\\
0&3&2
\end{pmatrix}.
$$
さらに $R_3\leftarrow R_3+R_2$ として
$$
U=\begin{pmatrix}
2&1&1\\
0&-3&-2\\
0&0&0
\end{pmatrix}
$$
を得ます。
使用した消去係数は $2,-1,-1$ です。符号を戻して下三角に並べると
$$
L=\begin{pmatrix}
1&0&0\\
2&1&0\\
-1&-1&1
\end{pmatrix}.
$$
直接掛けると $LU=A$ になります。
正方行列 $A$ を
$$
A=LU
$$
と表し、$L$ が対角成分1の下三角行列、$U$ が上三角行列であるとき、これをLU分解という。
消去操作を表す基本行列の積を $E$ とすれば $EA=U$、したがって
$$
A=E^{-1}U.
$$
一つの行へ前の行の $-c$ 倍を加える消去行列の逆は、同じ位置へ $c$ を入れた下三角基本行列です。消去を列の上から順に行えば、それらの逆の積 $E^{-1}$ は下三角になり、対角成分はすべて1です。これが $L$ です。
消去行列の積を逆にたどって下三角行列を作り、$Ax=b$ を二つの三角系へ分ける。
Gauss消去の各段階で行交換を使わず、主成分で割らずに上三角行列 $U$ まで消去できる正方行列 $A$ は、対角成分1の下三角行列 $L$ を用いて $A=LU$ と分解できる。
第 $k$ 列の主成分より下を消す操作を、基本行列 $E_k$ の左乗で表す。すべての消去後に
$$
E_s\cdots E_1A=U
$$
となる。各 $E_i$ は対角成分1の下三角行列で、逆行列も同じ位置の符号を反転した対角成分1の下三角行列である。よって
$$
A=E_1^{-1}\cdots E_s^{-1}U.
$$
下三角行列の積が下三角であることは、第 $i,j$ 成分の和で $i< j$ のとき非零項が存在しないことから従う。対角成分は1の積で1である。したがって $L:=E_1^{-1}\cdots E_s^{-1}$ と置けばよい。
$Ax=b$ は
$$
LUx=b
$$
です。まず $y=Ux$ と置いて $Ly=b$ を前進代入で解き、次に $Ux=y$ を後退代入で解きます。右辺 $b$ が変わっても $L,U$ は再利用できます。
下三角方程式
$$
\begin{pmatrix}1&0&0\\2&1&0\\-1&-1&1\end{pmatrix}
\begin{pmatrix}y_1\\y_2\\y_3\end{pmatrix}
=\begin{pmatrix}b_1\\b_2\\b_3\end{pmatrix}
$$
は上から
$$
y_1=b_1,
\quad y_2=b_2-2y_1,
\quad y_3=b_3+y_1+y_2
$$
と順に解けます。
$$
\begin{pmatrix}0&1\\1&0\end{pmatrix}
$$
は最初の主成分が零なので行交換が必要である。この場合は置換行列 $P$ を加えて $PA=LU$ とする。数値計算では、非零でも極端に小さい主成分を避けるためpivot選択を行う。
$$
A=\begin{pmatrix}2&3\\4&7\end{pmatrix}
$$
をLU分解せよ。
$R_2\leftarrow R_2-2R_1$ で $U=\begin{pmatrix}2&3\\0&1\end{pmatrix}$。消去係数2を用いて
$$
L=\begin{pmatrix}1&0\\2&1\end{pmatrix}.
$$
実際 $LU=A$ である。
最後に、第1章の計算を「解の位置」と「自由に動ける方向」にまとめます。
一回の消去が再利用可能な分解になった。計算量を減らすという線形代数の実用的な価値が見える。
次へ持ち越す問い
この見方を、次のページではより広い対象またはより計算しやすい形へ移す。
Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する