どうも、木村(@kimu3_slime)です。
線形代数では、行列の積の計算をよく扱います。\(2,2\)サイズの行列の計算は簡単ですが、サイズが大きくなるほどその具体的な計算は難しくなっていくものです。
大きな行列の計算の工夫のひとつに、ブロック行列という考え方があります。今回はブロック行列とは何か、ブロック対角行列について紹介していきましょう。
ブロック行列とは
次の行列の積を計算したいとしましょう。
\[ \begin{aligned}\begin{pmatrix} 1&0&0\\ 0&1&0 \\ -1 & 0 &1\end{pmatrix}\begin{pmatrix} 1&0&1\\ 0&1&0 \\ 0 & 0 &1\end{pmatrix}\end{aligned} \]
成分に0が多いので、そのまま計算することもできるでしょう。
実は、これはブロック分けして工夫して計算できるのです。
\[ \begin{aligned} A&= \left( \begin{array} {cc|c} 1&0& 0\\ 0&1&0 \\ \hline -1 & 0 &1\end{array} \right) \\ &= \begin{pmatrix} I& 0\\(-1,0) &1\end{pmatrix}\ \end{aligned} \]
\[ \begin{aligned} B&= \left( \begin{array} {cc|c} 1&0&1\\ 0&1&0 \\ \hline 0 & 0 &1\end{array} \right)\\ &= \begin{pmatrix} I& (1,0)^{T}\\ 0 &1\end{pmatrix} \end{aligned} \]
と、行列を小さなブロックに分けてみます。小さなブロックは適切なサイズの行列・ベクトルです。
このブロック分けした結果を、あたかも\(2,2\)行列の積であるかのように計算できるのです。やってみましょう。
\[ \begin{aligned} AB&=\begin{pmatrix} I& 0\\(-1,0) &1\end{pmatrix} \begin{pmatrix} I& (1,0)^{T}\\ 0 &1\end{pmatrix} \\&=\begin{pmatrix} I^2& I (1,0)^{T}\\(-1,0) I& (-1,0)(1,0)^{T}+1^2\end{pmatrix} \\&=\begin{pmatrix} I& (1,0)^{T}\\(-1,0) & 0 \end{pmatrix} \\ &= \begin{pmatrix} 1&0&1\\ 0&1&0 \\ -1 & 0 &0\end{pmatrix}\end{aligned} \]
この結果は、単純な積の計算の結果と一致しています(確かめてみてください)。3次の行列の積を、2次の行列の積であるかのように計算できました。
一般に、
\[ \begin{aligned} A&= \left( \begin{array} {cc|c} 1&0& 0\\ 0&1&0 \\ \hline -1 & 0 &1\end{array} \right) \\ &=\begin{pmatrix} A_{11}& A_{12}\\ A_{21} &A_{22}\end{pmatrix} \ \end{aligned} \]
といったように、1つの行列をいくつかの行列に分けて表すとき、それぞれの行列\(A_{ij}\)をブロック行列(block matrix)、区分行列と言います。ブロックに分けて考えることは、行列の区分け、分割とも呼ばれるものです。
積が定義できるように適切にブロック分けされた行列の積は、
\[ \begin{aligned} &\begin{pmatrix} A_{11}& A_{12}\\ A_{21} &A_{22}\end{pmatrix} \begin{pmatrix} B_{11}& B_{12}\\ B_{21} &B_{22}\end{pmatrix} \\ &= \begin{pmatrix} A_{11}B_{11}+A_{12}B_{21}& A_{11}B_{12}+A_{12}B_{22}\\ A_{21}B_{11}+A_{22}B_{21} &A_{21}B_{12}+A_{22}B_{22}\end{pmatrix} \end{aligned} \]
とあたかもブロックを単なる成分として扱った結果となります。
その証明は、それぞれの成分を比較するもので、齋藤「線型代数入門」p.39などを参照。
ちなみに、今回はブロック行列といって\(2,2\)のブロックに分けましたが、一般にはもっと多くのブロックに分けて考えることができ、同様の性質が成り立ちます。
ブロック行列は小行列と似ていますが、細かく言えば違う部分があります。例えば、\(3,3\)行列から2行目と2列目を除いてできる行列は、小行列ではあるがブロック行列ではありません。
小行列は、ある行列からいくつかの行または列を取り除いてできる行列のことで、小行列のほうが広い概念です。ブロック行列は、「連続する」いくつかの行または列を取り除いてできたもの。
ブロック対角行列
扱いやすいブロック行列の例として、ブロック対角行列があります。
\[ \begin{aligned} A&= \left( \begin{array} {cc|cc} 1&2& 0&0\\ 3&4&0&0 \\ \hline 0 & 0 &5 &0\\ 0&0&0& -6\end{array} \right) \\ &=\begin{pmatrix} A_{11}& O\\ O &A_{22}\end{pmatrix} \ \end{aligned} \]
といったように、
\[ \begin{aligned}D=\begin{pmatrix} D_1 &0& &O \\ 0& D_2 & & \\ &\ddots & \\ O & & &D_N \end{pmatrix} \end{aligned} \]
と\(D_1,\dots,D_N\)が正方行列であり、対角ブロック以外がゼロになるようにブロック分けできるとき、それをブロック対角行列(block diagonal matrix)と呼びます。(一般に、対角ブロックが正方行列となるようなブロック分けを、対称ブロック分け、対称区分けという。)
ブロック対角行列は、対角行列と非常によく似た性質を持っています。
ブロック対角行列の和、積、べき乗
ブロック対角行列同士の和は、
\[ \begin{aligned} &\begin{pmatrix} A_1 &0& &O \\ 0& A_2 & & \\ &\ddots & \\ O & & &A_N \end{pmatrix} +\begin{pmatrix} B_1 &0& &O \\ 0& B_2 & & \\ &\ddots & \\ O & & &B_N \end{pmatrix} \\&=\begin{pmatrix} A_1 +B_1 &0& &O \\ 0& A_2 +B_2& & \\ &\ddots & \\ O & & &A_N +B_N\end{pmatrix} \end{aligned} \]
とブロック対角行列になります。
ブロック対角行列同士の積は、ブロック行列の計算法則と対角行列の性質から、
\[ \begin{aligned} &\begin{pmatrix} A_1 &0& &O \\ 0& A_2 & & \\ &\ddots & \\ O & & &A_N \end{pmatrix} \begin{pmatrix} B_1 &0& &O \\ 0& B_2 & & \\ &\ddots & \\ O & & &B_N \end{pmatrix} \\&=\begin{pmatrix} A_1 B_1 &0& &O \\ 0& A_2 B_2& & \\ &\ddots & \\ O & & &A_N B_N\end{pmatrix} \end{aligned} \]
とブロック対角行列になります。例えば\(N=2\)のときなら、積を計算すればすぐに確かめられるでしょう。
ブロック対角行列のべき乗は、対角行列同様に計算できて、
\[ \begin{aligned} &\begin{pmatrix} A_1 &0& &O \\ 0& A_2 & & \\ &\ddots & \\ O & & &A_N \end{pmatrix} ^k \\&=\begin{pmatrix} A_1 ^k &0& &O \\ 0& A_2 ^k& & \\ &\ddots & \\ O & & &A_N ^k\end{pmatrix} \end{aligned} \]
となるわけです。
行列のべき乗を計算したいとき、対角化できるときはすれば簡単ですが、一般にはそうできるとは限りません。しかし、ジョルダン標準形と呼ばれるブロック対角行列には必ず変形できます。ジョルダン標準形のべき乗を計算するには、このブロック対角行列の扱いを知っておくと非常に楽でしょう。
ブロック対角行列の逆行列
対角行列では、その対角成分がすべて0ではないときに、その逆数を対角成分とした逆行列を考えることができました。
ブロック対角行列でも同様です。各ブロック\(A_1, \dots, A_N\)が可逆行列であるならば、\(A\)は可逆行列となります。その逆行列は、
\[ \begin{aligned}A^{-1} =\begin{pmatrix} A_1 ^{-1} &0& &O \\ 0& A_2 ^{-1}& & \\ &\ddots & \\ O & & &A_N ^{-1}\end{pmatrix} \end{aligned} \]
です。
実際、ブロック対角行列の積の性質を使って計算すれば
\[ \begin{aligned} AA^{-1} &=\begin{pmatrix} A_1A_1 ^{-1} &0& &O \\ 0& A_2A_2 ^{-1}& & \\ &\ddots & \\ O & & & A_N A_N ^{-1}\end{pmatrix}\\ &=\begin{pmatrix} I &0& &O \\ 0& I& & \\ &\ddots & \\ O & & &I\end{pmatrix} \\ &=I\end{aligned} \]
となるので。
行列式は、\(\det A = \det A_1 \det A_2 \cdots \det A_N\)と対角ブロック行列の行列式の積となります。対角行列のときと同様に、行列式の定義にしたがって確かめられるでしょう。
ブロック対角行列の固有値
ブロック対角行列の固有値はどうなるでしょうか。
固有方程式は\(\det (\lambda I -A) =0\)ですが、それは行列式の性質より\(\det (\lambda I -A_1) \cdots \cdots \det(\lambda I -A_N)=0\)となります。
つまり、\(A\)の固有値は、ブロック行列\(A_1,\dots, A_N\)の固有値に一致します。
行列の固有値の和、すなわちトレースはどうでしょうか。\(A\)のトレースは、すべてのブロック行列\(A_1,\dots, A_N\)の固有値の和=トレースに一致します。つまり、
\[ \begin{aligned}\mathrm{tr} A = \mathrm{tr}A_1 +\mathrm{tr}A_2 \cdots+\mathrm{tr}A_N\end{aligned} \]
が成り立つわけですね。
以上、ブロック行列とは何か、ブロック対角行列の例や性質を紹介してきました。
ブロック対角行列の扱いは対角行列同様であり、ブロック分けの威力を感じてもらえたのではないでしょうか。
ブロック三角行列というものを考えれば、それも三角行列と同様の性質を持つことが示せます。さらに一般の行列をブロック分けして逆行列を求める手法は、シューアの補行列として知られたものです。
サイズが3,4以上の行列を手計算するのは大変です。できるならば、ブロック分けによって、積の計算を分割して工夫して、2,2行列の計算に落とし込むと扱いやすくなるでしょう。
木村すらいむ(@kimu3_slime)でした。ではでは。
共立出版 (1982-07-09T00:00:01Z)
¥788 (中古品)
世界標準MIT教科書 ストラング:線形代数イントロダクション
近代科学社 (2015-12-22T00:00:01Z)
¥14,721 (コレクター商品)
東京大学出版会 (2019-03-08T00:00:00.000Z)
¥1,870
こちらもおすすめ
行列の対角化可能性の定義とメリット、例、同値条件について解説