LU分解

同義語:LU decompositionLU factorization

概要

LU分解(LU decomposition)とは、正方行列 $A$ を単位下三角行列 $L$ と上三角行列 $U$ の積 $A=LU$ に分けることであり、一般には行を並べ替える置換行列 $P$ を伴う $PA=LU$ の形で、掃き出し法の手順を行列の積として記録したものである。どの正方行列もこの形に分解でき、その手間は $\frac23n^3$ 回程度の演算で、分解のあとは右辺ごとに前進代入と後退代入の $2n^2$ 回程度で連立 1 次方程式が解ける。部分ピボット選択を使うと乗数の絶対値は $1$ 以下になり、途中の成分の増大は $2^{n-1}$ 倍までに抑えられ、この上界に達する行列もある。列について狭義の対角優位な行列では行の入れ替えが要らず、増大は $2$ 倍未満で済む。

$$\newcommand{C}[0]{\mathbb{C}} \newcommand{div}[0]{\mathbin{÷}} \newcommand{N}[0]{\mathbb{N}} \newcommand{Q}[0]{\mathbb{Q}} \newcommand{R}[0]{\mathbb{R}} \newcommand{Z}[0]{\mathbb{Z}} $$

前提知識: 掃き出し法, 三角行列, 正則行列, 行列式

連立 1 次方程式 $Ax=b$ を、係数行列 $A$ は同じまま右辺 $b$ だけを取り替えて何度も解きたいことがよくある。掃き出し法を右辺ごとにやり直すと、毎回 $n^3$ 程度の手間がかかる。ところが掃き出しの手順のうち右辺によらない部分は、$A$ を下三角行列 $L$ と上三角行列 $U$ の積に分けることとして一度だけ記録できる。分けてしまえば、各右辺について $Ly=b$ と $Ux=y$ という三角行列の方程式を 2 つ解くだけで済み、その手間は $n^2$ 程度である。これが LU 分解(LU decomposition)である。
数値計算では、行の入れ替え(ピボット選択)を組み込んだ $PA=LU$ の形を使う。入れ替えなしの分解が存在しない行列があるうえ、存在しても丸め誤差が大きく増幅されることがあるからである。この記事では、入れ替えつきの分解がどの正方行列にも存在すること、手間が $\frac23n^3$ 程度であること、部分ピボット選択のもとで途中の成分の大きさが $2^{n-1}$ 倍までに抑えられ、その評価が等号に達しうること、列について対角優位な行列では入れ替えが要らないことを証明する。入れ替えなしの分解の存在と一意性の判定(首座小行列式による)は 三角行列 の記事の定理「LU 分解の存在と一意性」が与えるので、ここでは繰り返さない。

定義と使える条件

以下、$K$ は体とし、$A\in M_n(K)$ とする。部分ピボット選択と増大率を扱うときは $K=\mathbb{R}$ または $\mathbb{C}$ とする。対角成分がすべて $1$ の下三角行列を 単位下三角行列 という。単位行列 $I_n$ の行を並べ替えた行列を 置換行列 という。置換行列 $P$ を左から掛けると $A$ の行が同じように並べ替わり、$P^{\top}=P^{-1}$、$\det P=\pm1$ である。

LU 分解と行の入れ替えつきの LU 分解
  1. $A=LU$($L$ は単位下三角行列、$U$ は上三角行列)と書くことを $A$ の LU 分解 という。
  2. $PA=LU$($P$ は置換行列、$L$ は単位下三角行列、$U$ は上三角行列)と書くことを、行の入れ替えつきの LU 分解(PLU 分解)という。$P=I_n$ のときが 1 である。

$A$ が正則で $A=LU$ なら、$\det U=\det A\ne0$ なので $U$ の対角成分はどれも $0$ でない。$U$ の対角成分を取り出して $U=DV$($D$ は対角行列、$V$ は単位上三角行列)と書いた $A=LDV$ を LDU 分解 という。
消去の 1 段を行列で表すのが次の行列である。$e_k$ で第 $k$ 単位ベクトルを表す。

Gauss 変換と部分ピボット選択
  1. $1\le k\le n-1$ とし、第 $1$ 成分から第 $k$ 成分までが $0$ である縦ベクトル $\ell=(0,\dots,0,\ell_{k+1},\dots,\ell_n)^{\top}\in K^n$ をとる。$M=I_n-\ell e_k^{\top}$ を(第 $k$ 列の)Gauss 変換 という。$MB$ は、$B$ の第 $i$ 行($i>k$)から第 $k$ 行の $\ell_i$ 倍を引いた行列である。$\ell_i$ を 乗数 という。
  2. 第 $k$ 段の消去で、第 $k$ 列の第 $k$ 行以下の成分のうち絶対値が最大のもの(最大が複数あれば行の番号が最小のもの)を選び、その行を第 $k$ 行と入れ替えてから消去することを 部分ピボット選択 という。選んだ成分を ピボット という。

使える条件をまとめておく。

  1. 入れ替えつきの分解(thm-lu-plu):$K$ は体であればよく、$A$ は正則でなくてよい。
  2. 入れ替えなしの分解:正則な $A$ では、首座小行列式 $\Delta_1,\dots,\Delta_n$ がすべて $0$ でないことが必要十分であり、このとき分解は一意である(三角行列 の記事の定理「LU 分解の存在と一意性」)。
  3. 乗数と増大率の評価(thm-lu-plu の 3、thm-lu-growth):$K=\mathbb{R}$ または $\mathbb{C}$ で、部分ピボット選択を使うこと。
  4. 入れ替えが要らない十分条件(thm-lu-diagdom):列について狭義の対角優位であること。

主定理と証明

Gauss 変換の計算規則

Gauss 変換の逆・積・入れ替え

$M_k=I_n-\ell_ke_k^{\top}$ を第 $k$ 列の Gauss 変換とする。

  1. $M_k^{-1}=I_n+\ell_ke_k^{\top}$ である。
  2. $k_1< k_2<\dots< k_s$ のとき、$(I_n+\ell_{k_1}e_{k_1}^{\top})(I_n+\ell_{k_2}e_{k_2}^{\top})\cdots(I_n+\ell_{k_s}e_{k_s}^{\top})=I_n+\sum_{r=1}^{s}\ell_{k_r}e_{k_r}^{\top}$ である。とくに $M_1^{-1}M_2^{-1}\cdots M_{n-1}^{-1}$ は、第 $k$ 列の対角より下に $\ell_k$ の成分を並べた単位下三角行列である。
  3. $Q$ が第 $i$ 行と第 $j$ 行を入れ替える置換行列で $i,j>k$ なら、$QM_kQ=I_n-(Q\ell_k)e_k^{\top}$ であり、これも第 $k$ 列の Gauss 変換である。
第 k 成分までが 0 であることを使う

要点:$\ell_k$ は第 $k$ 成分までが $0$ なので、$j\le k$ なら $e_j^{\top}\ell_k=0$ である。積を展開すると、この形の因子を含む項がすべて消える。

詳しい証明を開く

1:$(I_n-\ell_ke_k^{\top})(I_n+\ell_ke_k^{\top})=I_n-\ell_k(e_k^{\top}\ell_k)e_k^{\top}=I_n$ である。

2:$s$ についての帰納法で示す。$s=1$ は自明である。$s-1$ 個の積が $I_n+\sum_{r< s}\ell_{k_r}e_{k_r}^{\top}$ だとすると、それに $I_n+\ell_{k_s}e_{k_s}^{\top}$ を右から掛けたものは $$I_n+\sum_{r< s}\ell_{k_r}e_{k_r}^{\top}+\ell_{k_s}e_{k_s}^{\top}+\sum_{r< s}\ell_{k_r}\bigl(e_{k_r}^{\top}\ell_{k_s}\bigr)e_{k_s}^{\top}$$ である。$k_r< k_s$ なので $e_{k_r}^{\top}\ell_{k_s}=0$ であり、最後の和は消える。$\ell_ke_k^{\top}$ は第 $k$ 列だけが $\ell_k$ でほかの列が $0$ の行列なので、後半の主張が従う。

3:$Q^{\top}=Q^{-1}=Q$ であり、$i,j\ne k$ なので $Qe_k=e_k$、すなわち $e_k^{\top}Q=e_k^{\top}$ である。よって $QM_kQ=QQ-(Q\ell_k)(e_k^{\top}Q)=I_n-(Q\ell_k)e_k^{\top}$ である。$Q\ell_k$ は $\ell_k$ の第 $i$ 成分と第 $j$ 成分を入れ替えたもので、$i,j>k$ なので第 $k$ 成分までは $0$ のままである。$\square$

入れ替えつきの LU 分解の存在

入れ替えつきの LU 分解の存在

$K$ を体、$A\in M_n(K)$ とする。

  1. 置換行列 $P$、単位下三角行列 $L$、上三角行列 $U$ で $PA=LU$ となるものが存在する。$L$ の第 $k$ 列の対角より下の成分は、第 $k$ 段の消去で使った乗数を、後の段の行の入れ替えに合わせて並べ替えたものである。
  2. $U$ が正則であることと $A$ が正則であることは同値であり、$\det A=\det P\cdot u_{11}u_{22}\cdots u_{nn}$ である。
  3. $K=\mathbb{R}$ または $\mathbb{C}$ で、部分ピボット選択を使って 1 の分解を作ると、$L$ の成分はすべて $\lvert l_{ij}\rvert\le1$ を満たす。
消去の記録から置換を右へ集める

消去の手順:$A^{(1)}:=A$ とおく。$k=1,\dots,n-1$ について、第 $k$ 段を次のように行う。第 $k$ 列の第 $k$ 行以下の成分 $a^{(k)}_{ik}$($i\ge k$)に $0$ でないものがあれば、その 1 つ $a^{(k)}_{r_kk}$ を選ぶ(部分ピボット選択ではその規則で選ぶ)。すべて $0$ なら $r_k:=k$ とする。第 $k$ 行と第 $r_k$ 行を入れ替える置換行列を $P_k$($r_k=k$ なら $P_k=I_n$)とし、$B:=P_kA^{(k)}$ とおく。$b_{kk}\ne0$ なら $\ell_k$ の第 $i$ 成分($i>k$)を $b_{ik}/b_{kk}$ とし、$b_{kk}=0$(このとき $b_{ik}=0$ がすべての $i>k$ で成り立つ)なら $\ell_k:=0$ とする。$M_k:=I_n-\ell_ke_k^{\top}$、$A^{(k+1)}:=M_kB$ とおく。
形が保たれること:$A^{(k)}$ の第 $1$ 列から第 $k-1$ 列で対角より下の成分が $0$ であるとする。入れ替える 2 つの行の番号は $k$ 以上なので、どちらの行も第 $1$ 列から第 $k-1$ 列の成分が $0$ であり、$B$ も同じ形である。$M_k$ を掛けると第 $i$ 行($i>k$)から第 $k$ 行の($\ell_k$ の第 $i$ 成分)倍が引かれるが、第 $k$ 行は第 $1$ 列から第 $k-1$ 列が $0$ なので、それらの列は変わらない。第 $k$ 列の第 $i$ 成分は $b_{ik}-\frac{b_{ik}}{b_{kk}}b_{kk}=0$ になる($\ell_k=0$ の場合ははじめから $0$)。よって $A^{(k+1)}$ の第 $1$ 列から第 $k$ 列は対角より下が $0$ である。帰納法により $U:=A^{(n)}$ は上三角行列であり、
$$ U=M_{n-1}P_{n-1}M_{n-2}P_{n-2}\cdots M_1P_1A $$
が成り立つ。
置換を右へ集める:$Q_k:=P_{n-1}P_{n-2}\cdots P_{k+1}$($Q_{n-1}:=I_n$)、$P:=P_{n-1}\cdots P_1=Q_1P_1$、$\widetilde M_k:=Q_kM_kQ_k^{-1}$ とおく。$Q_{k-1}=Q_kP_k$ なので $Q_k^{-1}Q_{k-1}=P_k$ であり、
$$ \widetilde M_{n-1}\widetilde M_{n-2}\cdots\widetilde M_1P=M_{n-1}(Q_{n-1}^{-1}Q_{n-2})M_{n-2}(Q_{n-2}^{-1}Q_{n-3})\cdots M_1(Q_1^{-1}Q_1P_1)=M_{n-1}P_{n-1}\cdots M_1P_1 $$
である。$Q_k^{-1}=P_{k+1}\cdots P_{n-1}$ で、$P_j$($j>k$)は番号が $j$ 以上、したがって $k$ より大きい 2 つの行を入れ替えるので、lem-lu-gauss の 3 を $P_{k+1},\dots,P_{n-1}$ について順に使うと、$\widetilde M_k=I_n-\widetilde\ell_ke_k^{\top}$($\widetilde\ell_k:=Q_k\ell_k$)は第 $k$ 列の Gauss 変換である。よって $\widetilde M_{n-1}\cdots\widetilde M_1PA=U$ であり、lem-lu-gauss の 1 により
$$ PA=\widetilde M_1^{-1}\cdots\widetilde M_{n-1}^{-1}U=LU,\qquad L:=I_n+\sum_{k=1}^{n-1}\widetilde\ell_ke_k^{\top} $$
となる。lem-lu-gauss の 2 により $L$ は単位下三角行列で、その第 $k$ 列の対角より下は $\widetilde\ell_k$、すなわち乗数を後の入れ替えで並べ替えたものである。これで 1 が示された。
2:$\det L=1$ なので $\det P\det A=\det U=u_{11}\cdots u_{nn}$ であり、$\det P=\pm1$ で $\det P^{-1}=\det P$ である。$A$ が正則であることと $\det A\ne0$、したがって $\det U\ne0$ とは同値である。
3:部分ピボット選択では $b_{kk}$ が第 $k$ 列の第 $k$ 行以下で絶対値が最大なので、$b_{kk}\ne0$ のとき乗数は $\lvert b_{ik}/b_{kk}\rvert\le1$ を満たす。$\ell_k=0$ の場合も同じである。$\widetilde\ell_k$ の成分は $\ell_k$ の成分の並べ替えなので、$\lvert l_{ij}\rvert\le1$ である。$\square$

$A$ が正則で $P$ を 1 つ決めれば、$PA$ の LU 分解は一意である($PA$ に 三角行列 の記事の定理「LU 分解の存在と一意性」を当てる)。ただし $P$ はピボットの選び方で変わる。$A$ が正則でないときは、$P$ を決めても一意とは限らない(ex-lu-counterexamples)。

演算の回数

分解と代入の演算回数

thm-lu-plu の消去の手順(比較と行の入れ替えは数えない)で $n$ 次の行列の LU 分解を作るのに要する演算は、除法 $\frac{n(n-1)}2$ 回、乗法と減法がそれぞれ $\frac{(n-1)n(2n-1)}6$ 回であり、合計
$$ \frac23n^3-\frac12n^2-\frac16n $$
回である。分解ができていれば、右辺 $b$ 1 本について、前進代入 $Ly=Pb$ は $n^2-n$ 回、後退代入 $Ux=y$ は $n^2$ 回の演算で $Ax=b$ が解ける。

段ごとに数える

要点:第 $k$ 段は除法 $n-k$ 回と、乗法・減法が各 $(n-k)^2$ 回である。

詳しい証明を開く

第 $k$ 段では、$i=k+1,\dots,n$ について乗数を除法 1 回で求め(計 $n-k$ 回)、第 $k+1$ 行から第 $n$ 行、第 $k+1$ 列から第 $n$ 列の $(n-k)^2$ 個の成分を $a_{ij}-\ell_ia_{kj}$ に置き換える(乗法と減法が各 $(n-k)^2$ 回)。第 $k$ 列の第 $k$ 行より下は $0$ になるとわかっているので計算しない。$j=n-k$ とおいて和をとると、除法は $\sum_{j=1}^{n-1}j=\frac{n(n-1)}2$ 回、乗法と減法は各 $\sum_{j=1}^{n-1}j^2=\frac{(n-1)n(2n-1)}6$ 回である。合計は $$\frac{n(n-1)}2+\frac{(n-1)n(2n-1)}3=\frac{n(n-1)(4n+1)}6=\frac23n^3-\frac12n^2-\frac16n$$ である。

前進代入では $y_i=(Pb)_i-\sum_{j< i}l_{ij}y_j$ を $i=1,\dots,n$ の順に求め、乗法と減法を各 $i-1$ 回使う($l_{ii}=1$ なので除法は要らない)。合計は $2\sum_{i=1}^n(i-1)=n^2-n$ 回である。後退代入では $x_i=\bigl(y_i-\sum_{j>i}u_{ij}x_j\bigr)/u_{ii}$ を $i=n,\dots,1$ の順に求め、乗法と減法を各 $n-i$ 回、除法を 1 回使う。合計は $2\sum_{i=1}^n(n-i)+n=n^2$ 回である。$\square$

$n=2,3,10$ では分解の演算はそれぞれ $3,13,615$ 回である。$n$ が大きいとき、分解は $\frac23n^3$ 回程度、代入は右辺 1 本あたり $2n^2$ 回程度なので、右辺が $m$ 本あっても合計は $\frac23n^3+2mn^2$ 回程度で済む。乗除算だけを数えた 掃き出し法 の記事の命題「Gauss の消去法の乗除算の回数」(約 $\frac13n^3$ 回)と主要項が合っている(加減算を合わせると 2 倍になる)。

部分ピボット選択と成分の増大

計算機の演算は有限桁で丸められる。消去の途中で成分が大きくなると、その丸め誤差も大きくなるので、途中の成分の大きさを抑えることが要になる。$K=\mathbb{R}$ または $\mathbb{C}$ とし、thm-lu-plu の手順の途中の行列 $A^{(1)}=A,A^{(2)},\dots,A^{(n)}=U$ について
$$ \rho(A):=\frac{\max_{k,i,j}\lvert a^{(k)}_{ij}\rvert}{\max_{i,j}\lvert a_{ij}\rvert} $$
を消去の 増大率 という($A\ne O$ とする)。

部分ピボット選択での増大率の上界

$A\in M_n(\mathbb{C})$、$A\ne O$ とし、部分ピボット選択で消去する。

  1. すべての $k$ と $i,j$ について $\lvert a^{(k)}_{ij}\rvert\le2^{k-1}\max_{i,j}\lvert a_{ij}\rvert$ であり、$\rho(A)\le2^{n-1}$ である。
  2. この上界は等号に達しうる。$W_n$ を、対角成分が $1$、対角より下の成分が $-1$、第 $n$ 列の成分が $1$、そのほかが $0$ の $n$ 次行列とすると、部分ピボット選択は行を入れ替えず、$u_{nn}=2^{n-1}$、$\rho(W_n)=2^{n-1}$ である。
1 段で高々 2 倍になる

1:$\mu_k:=\max_{i,j}\lvert a^{(k)}_{ij}\rvert$ とおく。$B=P_kA^{(k)}$ は行を入れ替えただけなので成分の最大値は $\mu_k$ である。$A^{(k+1)}=M_kB$ の成分は、第 $k$ 行以上では $B$ の成分のままで、第 $i$ 行($i>k$)では $b_{ij}-\ell_ib_{kj}$ である。thm-lu-plu の 3 により $\lvert\ell_i\rvert\le1$ なので
$$ \lvert b_{ij}-\ell_ib_{kj}\rvert\le\lvert b_{ij}\rvert+\lvert\ell_i\rvert\lvert b_{kj}\rvert\le2\mu_k $$
である。よって $\mu_{k+1}\le2\mu_k$ であり、$\mu_1=\max\lvert a_{ij}\rvert$ から帰納法で $\mu_k\le2^{k-1}\mu_1$ を得る。$k\le n$ なので $\rho(A)\le2^{n-1}$ である。
2:$n$ についての帰納法で、次を示す。「第 $n$ 列が $c$($c$ は複素数)で、それ以外は $W_n$ と同じ行列 $W_n(c)$ を部分ピボット選択で消去すると、行は入れ替わらず、第 $1$ 段のあと右下の $n-1$ 次の部分は $W_{n-1}(2c)$ になる。」第 $1$ 列は $1,-1,\dots,-1$ で絶対値はすべて $1$ なので、規則により番号最小の第 $1$ 行がピボットになり、入れ替えは起きない。乗数はすべて $-1$ で、各行 $i\ge2$ に第 $1$ 行 $(1,0,\dots,0,c)$ を足す。第 $2$ 列から第 $n-1$ 列は第 $1$ 行の成分が $0$ なので変わらず、第 $n$ 列は $c+c=2c$ になる。よって右下の部分は $W_{n-1}(2c)$ である。$W_n=W_n(1)$ から始めてこれを繰り返すと(最後は $W_1(2^{n-1})=(2^{n-1})$)、第 $k$ 段のあとの右下の部分は $W_{n-k}(2^k)$ であり、$u_{nn}=2^{n-1}$ である。成分の絶対値の最大は第 $k$ 段のあとで $2^k$、最後に $2^{n-1}$ で、$\max\lvert w_{ij}\rvert=1$ なので $\rho(W_n)=2^{n-1}$ である。$\square$

$\rho(W_n)=2^{n-1}$ は $n=60$ で $5\times10^{17}$ を超える。したがって部分ピボット選択だけでは、成分の増大を一般には防げない。ただし $W_n$ のように上界に達する行列は特別な形をしており、部分ピボット選択は手間が小さい(比較が $\frac{n(n-1)}2$ 回増えるだけである)ので、一般の行列の LU 分解の標準の方法として使われている(BV04 §C.3.1、p. 668)。次の定理は、増大を確実に抑えられる行列の族を与える。

列について対角優位な行列

$A\in M_n(\mathbb{C})$ が 列について狭義の対角優位 であるとは、各列 $j$ で $\lvert a_{jj}\rvert>\sum_{i\ne j}\lvert a_{ij}\rvert$ が成り立つことをいう。

列について対角優位な行列の LU 分解

$A\in M_n(\mathbb{C})$ が列について狭義の対角優位であるとする。

  1. 消去の第 $1$ 段のあとの右下の $n-1$ 次の部分 $S=(a_{ij}-a_{i1}a_{1j}/a_{11})_{i,j\ge2}$ も、列について狭義の対角優位である。
  2. $A$ は正則であり、部分ピボット選択は行を入れ替えない。とくに $A=LU$($P=I_n$)であり、$\lvert l_{ij}\rvert<1$($i>j$)である。
  3. $\rho(A)< 2$ である。
第 1 段の不等式を列ごとに足す

1:$\lvert a_{11}\rvert>\sum_{i\ge2}\lvert a_{i1}\rvert\ge0$ なので $a_{11}\ne0$ である。$j\ge2$ を固定し、$s_{ij}:=a_{ij}-a_{i1}a_{1j}/a_{11}$ とおく。三角不等式と、第 $1$ 列の対角優位から出る $\sum_{i\ge2,\,i\ne j}\lvert a_{i1}\rvert<\lvert a_{11}\rvert-\lvert a_{j1}\rvert$ により
$$ \sum_{i\ge2,\,i\ne j}\lvert s_{ij}\rvert\le\sum_{i\ge2,\,i\ne j}\lvert a_{ij}\rvert+\frac{\lvert a_{1j}\rvert}{\lvert a_{11}\rvert}\sum_{i\ge2,\,i\ne j}\lvert a_{i1}\rvert\le\sum_{i\ge2,\,i\ne j}\lvert a_{ij}\rvert+\lvert a_{1j}\rvert-\frac{\lvert a_{1j}\rvert\lvert a_{j1}\rvert}{\lvert a_{11}\rvert} $$
である。右辺の最初の 2 項の和は $\sum_{i\ne j}\lvert a_{ij}\rvert$ で、第 $j$ 列の対角優位によりこれは $\lvert a_{jj}\rvert$ より真に小さい。また $\lvert a_{jj}\rvert-\frac{\lvert a_{1j}\rvert\lvert a_{j1}\rvert}{\lvert a_{11}\rvert}\le\lvert s_{jj}\rvert$ である。よって $\sum_{i\ge2,\,i\ne j}\lvert s_{ij}\rvert<\lvert s_{jj}\rvert$ となる。
2:第 $1$ 列の対角優位から $\lvert a_{11}\rvert>\lvert a_{i1}\rvert$($i\ge2$)なので、部分ピボット選択は第 $1$ 行を選び、乗数は $\lvert a_{i1}/a_{11}\rvert<1$ である。消去のあとの右下の部分は 1 の $S$ で、再び列について狭義の対角優位なので、同じ議論を $n$ についての帰納法で繰り返せる。行が一度も入れ替わらないので $P=I_n$ で、$L$ の成分は乗数そのものである。$U$ の対角成分は各段のピボットで $0$ でないので、thm-lu-plu の 2 により $A$ は正則である。
3:まだ消去していない部分の各列の絶対値の和が、段を進めても増えないことを示す。

詳細

第 $j$ 列($j\ge2$)の第 $2$ 行以下の絶対値の和を比べる。1 の最初の不等式を $i=j$ の項まで含めて同じように書くと $$\sum_{i\ge2}\lvert s_{ij}\rvert\le\sum_{i\ge2}\lvert a_{ij}\rvert+\frac{\lvert a_{1j}\rvert}{\lvert a_{11}\rvert}\sum_{i\ge2}\lvert a_{i1}\rvert\le\sum_{i\ge2}\lvert a_{ij}\rvert+\lvert a_{1j}\rvert=\sum_{i\ge1}\lvert a_{ij}\rvert$$ である。2 の帰納法により各段のまだ消去していない部分も列について狭義の対角優位なので、この不等式はどの段にも当てはまる。つまり、まだ消去していない部分の各列の絶対値の和は、段を進めても増えない。どの段の行列 $A^{(k)}$ の成分も、ある段の消去していない部分の成分なので、第 $j$ 列の成分は $\sum_i\lvert a_{ij}\rvert$ 以下である。これは対角優位により $2\lvert a_{jj}\rvert$ 未満である。よって $\lvert a^{(k)}_{ij}\rvert< 2\max_j\lvert a_{jj}\rvert\le2\max_{i,j}\lvert a_{ij}\rvert$ であり、$\rho(A)< 2$ である。$\square$

列についての条件を行についての条件 $\lvert a_{ii}\rvert>\sum_{j\ne i}\lvert a_{ij}\rvert$ に替えると、2 の「入れ替えない」は成り立たない(ex-lu-counterexamples)。行について対角優位な $A$ では $A^{\top}$ が列について対角優位なので、$A^{\top}=L'U'$ から $A=U'^{\top}L'^{\top}$ という、上三角と下三角の順の分解が得られる。正定値な実対称行列では、行の入れ替えなしに $A=LL^{\top}$($L$ は対角成分が正の下三角行列)と分解でき、演算は $\frac13n^3$ 回程度である(Cholesky 分解、BV04 §C.3.2、p. 669)。その一意性は 正定値行列 の記事の命題「Cholesky 分解の一意性」にある。

公式の表

$A$ は $n$ 次、$PA=LU$ は thm-lu-plu の分解とする。演算の回数は主要項だけを書く。

計算方法演算の回数使える条件根拠
分解 $PA=LU$消去(thm-lu-plu の手順)$\frac23n^3$$K$ は体prop-lu-flops
$Ax=b$$Ly=Pb$(前進)、$Ux=y$(後退)$2n^2$$A$ が正則prop-lu-flops
$AX=B$(右辺 $m$ 本)分解 1 回+代入 $m$ 組$\frac23n^3+2mn^2$$A$ が正則prop-lu-flops
$\det A$$\det P\cdot u_{11}\cdots u_{nn}$$\frac23n^3$なしthm-lu-plu の 2
$A^{-1}$右辺を $e_1,\dots,e_n$ にとる$\frac83n^3$$A$ が正則prop-lu-flops
$\lvert l_{ij}\rvert\le1$、$\rho(A)\le2^{n-1}$部分ピボット選択比較 $\frac{n^2}2$$K=\mathbb{R},\mathbb{C}$thm-lu-plu、thm-lu-growth
$P=I_n$、$\rho(A)< 2$そのまま消去—列について狭義の対角優位thm-lu-diagdom
$A=LL^{\top}$Cholesky 分解$\frac13n^3$正定値な実対称行列BV04 §C.3.2

$\det P$ は、消去の途中で実際に行を入れ替えた回数を $s$ として $(-1)^s$ である(入れ替え 1 回で行列式の符号が変わる)。

計算の手順

$Ax=b$ を部分ピボット選択つきの LU 分解で解く手順は次のとおりである。

  1. $k=1,\dots,n-1$ の順に、第 $k$ 列の第 $k$ 行以下で絶対値が最大の成分の行を第 $k$ 行と入れ替える。入れ替えは、それまでに求めた乗数の行にも同じように行う(これで thm-lu-plu の証明の $\widetilde\ell_k$ が得られる)。入れ替えた行の番号を記録する。
  2. 乗数 $l_{ik}=a_{ik}/a_{kk}$($i>k$)を求めて行列の第 $(i,k)$ 成分の位置に書き込み、第 $i$ 行の第 $k+1$ 列以降から第 $k$ 行の $l_{ik}$ 倍を引く。ピボットが $0$ なら(その列の第 $k$ 行以下がすべて $0$ なら)$A$ は正則でないので、方程式を解く目的ならここで止める。
  3. 終わったとき、行列の対角とその上が $U$、対角の下が $L$ の対角の下の部分、記録した入れ替えが $P$ である。
  4. 右辺 $b$ に記録どおりの入れ替えを行って $Pb$ を作り、前進代入で $Ly=Pb$、後退代入で $Ux=y$ を解く。
  5. 右辺が増えたら、4 だけを繰り返す。
    手順 2 で乗数を $A$ の空いた場所に書き込むので、$L$ と $U$ のために新しい記憶場所は要らない。

例題

部分ピボット選択つきの分解

$A=\begin{pmatrix}2&1&1\\4&3&3\\8&7&9\end{pmatrix}$ を部分ピボット選択で分解する(この行列の入れ替えなしの分解は 三角行列 の記事の例「LU 分解の計算」にある)。
答え:$P=\begin{pmatrix}0&0&1\\1&0&0\\0&1&0\end{pmatrix}$(第 $3$ 行・第 $1$ 行・第 $2$ 行の順に並べる)、
$$ L=\begin{pmatrix}1&0&0\\ \frac14&1&0\\ \frac12&\frac23&1\end{pmatrix},\qquad U=\begin{pmatrix}8&7&9\\0&-\frac34&-\frac54\\0&0&-\frac23\end{pmatrix} $$
であり、$\det A=\det P\cdot8\cdot(-\frac34)\cdot(-\frac23)=4$ である($P$ は 2 回の入れ替えの積なので $\det P=1$)。

途中の計算を開く

第 1 段:第 1 列で絶対値最大は第 3 行の $8$ なので、第 1 行と第 3 行を入れ替えて $\begin{pmatrix}8&7&9\\4&3&3\\2&1&1\end{pmatrix}$。乗数は $\frac48=\frac12$、$\frac28=\frac14$ で、消去すると第 2 行は $(0,-\frac12,-\frac32)$、第 3 行は $(0,-\frac34,-\frac54)$。

第 2 段:第 2 列の第 2 行以下は $-\frac12,-\frac34$ で、絶対値最大は第 3 行。第 2 行と第 3 行を入れ替え、乗数の列も入れ替える(第 2 行の乗数が $\frac14$、第 3 行が $\frac12$ になる)。乗数 $\frac{-1/2}{-3/4}=\frac23$ で消去すると、第 3 行は $-\frac32-\frac23\cdot(-\frac54)=-\frac23$。

入れ替えの記録は「1 と 3」「2 と 3」で、$P$ は $A$ の行を第 3・第 1・第 2 の順に並べる。$LU$ を計算すると $PA=\begin{pmatrix}8&7&9\\2&1&1\\4&3&3\end{pmatrix}$ に一致する。


入れ替えなしの分解の乗数は $2,4,3$ で $1$ を超えたが、ここでは乗数がすべて $1$ 以下である(thm-lu-plu の 3)。

同じ分解で 2 つの右辺を解く

ex-lu-plu の $A$ について、$Ax=b_1$($b_1=(4,10,24)^{\top}$)と $Ax=b_2$($b_2=e_1=(1,0,0)^{\top}$)を解く。
答え:$x_1=(1,1,1)^{\top}$、$x_2=(\frac32,-3,1)^{\top}$。$x_2$ は $A^{-1}$ の第 1 列である。

途中の計算を開く

$b_1$:$Pb_1=(24,4,10)^{\top}$。前進代入で $y_1=24$、$y_2=4-\frac14\cdot24=-2$、$y_3=10-\frac12\cdot24-\frac23\cdot(-2)=-\frac23$。後退代入で $x_3=\frac{-2/3}{-2/3}=1$、$x_2=\frac{-2+\frac54\cdot1}{-3/4}=1$、$x_1=\frac{24-7-9}{8}=1$。

$b_2$:$Pb_2=(0,1,0)^{\top}$。前進代入で $y=(0,1,-\frac23)^{\top}$。後退代入で $x_3=1$、$x_2=\frac{1+\frac54}{-3/4}=-3$、$x_1=\frac{0-7\cdot(-3)-9}{8}=\frac32$。

3 重対角行列

対角成分が $2$、その上下の成分が $-1$、ほかが $0$ の $n$ 次行列 $T_n$ を入れ替えなしで分解すると、$L$ の対角のすぐ下の成分は $l_{k+1,k}=-\frac{k}{k+1}$、$U$ の対角成分は $u_{kk}=\frac{k+1}k$、対角のすぐ上は $-1$ で、ほかはすべて $0$ である。したがって $\det T_n=\prod_{k=1}^n\frac{k+1}k=n+1$($n=5$ で $6$)である。

途中の計算を開く

第 $k$ 段の直前に、消去していない部分の左上の成分が $\frac{k+1}k$ で、第 $k$ 列の第 $k$ 行より下は第 $k+1$ 行の $-1$ だけだとする($k=1$ では $2=\frac21$)。乗数は $\frac{-1}{(k+1)/k}=-\frac k{k+1}$ で、第 $k$ 行の第 $k+1$ 列は $-1$ なので、第 $(k+1,k+1)$ 成分は $2-\frac k{k+1}=\frac{k+2}{k+1}$ になる。第 $k$ 行のそれより右は $0$ なので、ほかの成分は変わらず、次の段でも同じ形が続く。


$L$ と $U$ はどちらも対角とそのすぐ隣にしか $0$ でない成分をもたないので、分解と代入の演算はどちらも $n$ に比例する回数で済む。帯行列の分解では、帯の外に $0$ でない成分が現れないことが計算を速くする。

増大率が上界に達する行列

thm-lu-growth の 2 の $W_4=\begin{pmatrix}1&0&0&1\\-1&1&0&1\\-1&-1&1&1\\-1&-1&-1&1\end{pmatrix}$ の部分ピボット選択つきの分解は、$P=I_4$、
$$ L=\begin{pmatrix}1&0&0&0\\-1&1&0&0\\-1&-1&1&0\\-1&-1&-1&1\end{pmatrix},\qquad U=\begin{pmatrix}1&0&0&1\\0&1&0&2\\0&0&1&4\\0&0&0&8\end{pmatrix} $$
である。成分の絶対値の最大は $1$ から $8=2^3$ に増え、$\rho(W_4)=8$ である。$n=10$ では $u_{10,10}=512$ である。

列について対角優位な行列

$A=\begin{pmatrix}5&1&2\\2&6&1\\1&-2&4\end{pmatrix}$ の各列では $5>2+1$、$6>1+2$、$4>2+1$ なので、列について狭義の対角優位である。部分ピボット選択は行を入れ替えず、
$$ L=\begin{pmatrix}1&0&0\\ \frac25&1&0\\ \frac15&-\frac{11}{28}&1\end{pmatrix},\qquad U=\begin{pmatrix}5&1&2\\0&\frac{28}5&\frac15\\0&0&\frac{103}{28}\end{pmatrix} $$
である。第 1 段のあとの右下の部分 $\begin{pmatrix}28/5&1/5\\-11/5&18/5\end{pmatrix}$ でも、$\frac{28}5>\frac{11}5$、$\frac{18}5>\frac15$ と対角優位が続いている(thm-lu-diagdom の 1)。

使える条件と反例

外す条件反例成り立たなくなること
行の入れ替えを許す($P=I_n$ に限る)$\begin{pmatrix}0&1\\1&0\end{pmatrix}$分解の存在(thm-lu-plu の 1)
$A$ が正則($P$ を固定)$\begin{pmatrix}0&1\\0&1\end{pmatrix}$分解の一意性
部分ピボット選択$\begin{pmatrix}\varepsilon&1\\1&1\end{pmatrix}$($0<\varepsilon<1$)を入れ替えずに消去$\lvert l_{ij}\rvert\le1$ と $\rho(A)\le2^{n-1}$
列について狭義の対角優位$W_n$(ex-lu-wilkinson)$\rho(A)< 2$(実際は $2^{n-1}$)
対角優位を「列」でなく「行」にする$\begin{pmatrix}2&0\\3&4\end{pmatrix}$行を入れ替えないこと、$\lvert l_{ij}\rvert<1$
対角優位を狭義でなく広義にする$\begin{pmatrix}1&1\\1&1\end{pmatrix}$$A$ が正則であること
反例:表の各行の確かめ

どの反例も、表の左の列の条件だけを破り、ほかの仮定は満たしている。

計算を開く

1 行目:$\begin{pmatrix}0&1\\1&0\end{pmatrix}=\begin{pmatrix}1&0\\l&1\end{pmatrix}\begin{pmatrix}u_{11}&u_{12}\\0&u_{22}\end{pmatrix}$ とすると、$(1,1)$ 成分から $u_{11}=0$、$(2,1)$ 成分から $lu_{11}=1$ となり矛盾する(三角行列 の記事の表と同じ行列)。2 行を入れ替えれば $I_2=I_2I_2$ と分解できる。

2 行目:任意の $l$ について $\begin{pmatrix}1&0\\l&1\end{pmatrix}\begin{pmatrix}0&1\\0&1-l\end{pmatrix}=\begin{pmatrix}0&1\\0&1\end{pmatrix}$ なので、$P=I_2$ の分解が無数にある。

3 行目:入れ替えずに消去すると乗数は $\frac1\varepsilon$、$U=\begin{pmatrix}\varepsilon&1\\0&1-\frac1\varepsilon\end{pmatrix}$ で、$\lvert l_{21}\rvert=\frac1\varepsilon>1$、$\rho=\frac1\varepsilon-1$ である。$\varepsilon< \frac13$ なら $\rho>2=2^{n-1}$ で、$\varepsilon\to0$ で限りなく大きくなる。部分ピボット選択では 2 行を入れ替え、$L=\begin{pmatrix}1&0\\\varepsilon&1\end{pmatrix}$、$U=\begin{pmatrix}1&1\\0&1-\varepsilon\end{pmatrix}$ となる。$\varepsilon=10^{-4}$ の場合に丸めが答えを壊す様子は 掃き出し法 の記事の例「反例:ピボットの選び方と丸め」にある。

4 行目:$W_n$ の第 1 列は $\lvert1\rvert< n-1$($n\ge3$)で対角優位でない。$\rho(W_n)=2^{n-1}$ は thm-lu-growth の 2 である。

5 行目:各行で $2>0$、$4>3$ なので行について狭義の対角優位だが、第 1 列では $\lvert3\rvert>\lvert2\rvert$ なので部分ピボット選択は 2 行を入れ替える。入れ替えずに消去すると乗数は $\frac32>1$ である。

6 行目:各列で $1\ge1$ なので広義の対角優位だが、$\det=0$ である。

よくある誤り

誤り正しくはなぜ
どの正則行列も $A=LU$ と分解できるとする一般には行の入れ替えが要り、$PA=LU$ の形になるex-lu-counterexamples の 1 行目
行を入れ替えたあと、それまでの乗数の行を入れ替えない乗数も同じように入れ替えるthm-lu-plu の証明の $\widetilde\ell_k$
$Ly=b$ を解く($P$ を忘れる)$Ly=Pb$ を解く$PA=LU$ から $LUx=Pb$
$\det A=u_{11}\cdots u_{nn}$ とする入れ替えの回数 $s$ について $(-1)^s$ を掛けるthm-lu-plu の 2
逆行列を作ってから $x=A^{-1}b$ とする分解と代入で直接解く。逆行列は約 $\frac83n^3$、分解は $\frac23n^3$prop-lu-flops
部分ピボット選択なら成分は大きくならないとする最悪で $2^{n-1}$ 倍になるthm-lu-growth の 2

補足

完全ピボット選択とブロック版

第 $k$ 段で、消去していない部分全体から絶対値最大の成分を選び、行と列の両方を入れ替える方法を 完全ピボット選択 という。分解は $PAQ=LU$($P,Q$ は置換行列)の形になり、比較の回数は $\frac13n^3$ 程度に増える。疎行列では、成分の大きさよりも $L,U$ に新しく現れる $0$ でない成分を減らすように行と列を並べ替えた $A=P_1LUP_2$ が使われる(BV04 §C.3.1、p. 669)。また、行列をブロックに分け、ブロック行列 の記事の定理「区分 LDU 分解と Schur 補行列」を段ごとに当てる形に書き直すと、同じ演算を行列どうしの積にまとめて行える。

関連項目

参考文献

[1]
Stephen Boyd, Lieven Vandenberghe, Convex Optimization, Cambridge University Press, 2004, Appendix C.3.1 LU factorization(pp. 668–669)、C.3.2 Cholesky factorization(p. 669)

Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する