目次
続きは現在作成中

行列とその演算(4)

2022-6-1

行列の積の計算の工夫

行列とその演算(2)では「積」と呼ばれる演算を定義し、行列とその演算(3)では積の性質について説明しました。

ところで、一般に大きい型の行列の計算は手間がかかります。 ここでは、積の計算を小さい型の行列の積に帰着させる工夫について説明します。

行列の区分け

行列にいくつかの縦の線と横の線を引き、区画に分けて考えたものを行列の区分けといいます。

行列 \(A=\left( \begin{array}{rrrr} 1 & 2 & 1 &0\\ 2 & 3 & -1 &2\\ 3 & 4 & -2 & 1 \end{array}\right)\) に、例えば縦の線一本と横の線一本を次のように引き、4つの区画に分けてみます。

\[A=\left( \begin{array}{rrr|r} 1 & 2 & 1 &0\\ 2 & 3 & -1 &2\\ \hline 3 & 4 & -2 & 1 \end{array}\right) \]

そして、このようにしてできたそれぞれの区画を行列とみなすことにします。

つまり、ここでは行列 \(A\) を4つの小さな行列 \[ \left( \begin{array}{rrr} 1 & 2 & 1 \\ 2 & 3 & -1 \end{array}\right) \quad \left( \begin{array}{r} 0\\ 2 \end{array}\right) \]

\[ \left( \begin{array}{rrr} 3 & 4 & -2 \end{array}\right) \qquad \left( \begin{array}{r} 1 \end{array}\right) \] が並んでできているものと考えることにしたわけです。

またここでは次のように名前をつけておきます。 \[A_{11}= \left( \begin{array}{rrr} 1 & 2 & 1 \\ 2 & 3 & -1 \end{array}\right) ,\quad A_{12}= \left( \begin{array}{r} 0\\ 2 \end{array}\right), \]

\[ A_{21}= \left( \begin{array}{rrr} 3 & 4 & -2 \end{array}\right) ,\quad A_{22}= \left( \begin{array}{r} 1 \end{array}\right) \] すると、これらの行列を使って \(A\) の区分けを、 \[A=\left( \begin{array}{cc} A_{11} & A_{12}\\ A_{21} & A_{22} \end{array} \right) \] のようにあらわすことができます。

区分けによる積の計算

\((l,m)\) 行列 \(A\)\((m,n)\) 行列 \(B\) に対して、\(A\) の列の分け方と \(B\) の行の分け方が同じになるように区分けをすることにします。

例えば

\[A=\left( \begin{array}{r|rrr|rr} 1 & -1 & 2 & 0 & 0 & 3\\ 0 & 3 & 2 & 0 & 1 & 1\\ \hline 1 & 0 & -2 & 0 & 2 & -1\\ 3 & -1 & 2 & 0 & 0 & 0\\ \end{array} \right),\, B=\left( \begin{array}{rr|r} 1 & -1 & 0 \\ \hline 3 & 2 & 2 \\ -2 & 0 & -1 \\ 1 & 1 & -2\\ \hline 0 & 1 & -1 \\ 0 & 2 & 2 \\ \end{array} \right) \]

のように \((4,6)\) 型行列 \(A\)\((6,3)\) 型行列 \(B\) を区分けしてみたとします。

\(A\) の列は 左から 1 列分、3 列分、2 列分 に分かれています。
\(B\) の行は上から 1 行分、3 行分、2 行分 に分かれています。
ですからこの区分けでは \(A\) の列の分け方と \(B\) の行の分け方が同じになっています。

実は、\(A\) の列の分け方と \(B\) の行の分け方を同じにして考えると、積 \(AB\) は区分けされた \(A\)\(B\) を使ってあたかも普通の行列の積を求めるように計算できることがわかります。

例えば、 \(A=\left( \begin{array}{cc} A_{11} & A_{12}\\ A_{21} & A_{22} \end{array} \right),\quad B=\left( \begin{array}{cc} B_{11} & B_{12}\\ B_{21} & B_{22} \end{array} \right)\)

ただし、ここで
\(\:\:A_{11}\) の列の数 \(= B_{11}\) の行の数
\(\:\:A_{12}\) の列の数 \(= B_{21}\) の行の数
となるように区分けを行っておけば \[ AB =\left( \begin{array}{cc} 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{array} \right) \] として計算して良いということです。

もちろん \(A_{11}B_{11} + A_{12}B_{21} ,\quad A_{11}B_{12} + A_{12}B_{21}, \ldots\) などは区分けによりあらわれた行列の積をまじめに計算して求める必要があります。

それでは、ここで説明した計算が成り立つわけを次の図を見て考えることにしましょう。

区分けによる行列の積の計算のしくみ

たとえば、積 \(AB\)\((i,j)\) 成分 \(\star\) がそもそもどのような計算で求められるのだったのかを思い出し、行列が区分けされていることに注意すると、 \[ \begin{align} \star &=a_{i1}b_{1j} + a_{i2}b_{2j} + \cdots + a_{im}b_{mj}\\[6pt] &= (a_{i1}b_{1j} + a_{i2}b_{2j} + \cdots) + (\cdots + a_{im}b_{mj})\\[6pt] &= A_{21}B_{11}\, \mathrm{の} \,(i,j)\,\mathrm{成分}\, + A_{22}B_{21}\, \mathrm{の} \,(i,j)\,\mathrm{成分} \end{align}\] となることがわかります。

区分けによる積の計算が役立つ例

行列の区分けは、うまく区分けをして区画の中に零行列が現れるようにできる場合などに威力を発揮します。

たとえば、次のような計算ができることがわかります。

\[ \begin{align} &\left( \begin{array}{cc} A_{11} & A_{12}\\ O & A_{22} \end{array} \right) \left( \begin{array}{cc} B_{11} & B_{12}\\ O & B_{22} \end{array} \right) = \left( \begin{array}{cc} A_{11}B_{11} & A_{11}B_{12} + A_{12}B_{22}\\ O & A_{22}B_{22} \end{array} \right)\\[10pt] &\left( \begin{array}{cc} A_{11} & O\\ O & A_{22} \end{array} \right) \left( \begin{array}{cc} B_{11} & O\\ O & B_{22} \end{array} \right) = \left( \begin{array}{cc} A_{11}B_{11} & O\\ O & A_{22}B_{22} \end{array} \right) \end{align} \]

\[A = \left( \begin{array}{rr|rrr} 1 & -1 & 0 & 0 & 0\\ 0 & -2 & 0 & 0 & 0\\ \hline 0 & 0 & -2 & 3 & 1\\ 0 & 0 & 1 & 1 & -2 \end{array} \right), \, B = \left( \begin{array}{rr|rr} 2 & 1 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ \hline 0 & 0 & 1 & 1 \\ 0 & 0 & 2 & -3\\ 0 & 0 & 3 & -1 \end{array} \right) \]

と区分けをして

\[ \begin{align} &A_{11} = \left( \begin{array}{rr} 1 & -1 \\ 0 & -2 \\ \end{array} \right), \quad A_{22} = \left( \begin{array}{rrr} -2 & 3 & 1\\ 1 & 1 & -2 \end{array} \right),\\[6pt] &B_{11} = \left( \begin{array}{rr} 2 & 1 \\ 0 & 1 \\ \end{array} \right), \quad B_{22} = \left( \begin{array}{rr|rr} 1 & 1 \\ 2 & -3\\ 3 & -1 \end{array} \right) \end{align} \]

とおくと、

\[ A=\left( \begin{array}{cc} A_{11} & O \\ O & A_{22} \end{array} \right) ,\quad B=\left( \begin{array}{cc} B_{11} & O \\ O & B_{22} \end{array} \right) \]

となります。ということは

\[ AB= \left( \begin{array}{cc} A_{11}B_{11} & O\\ O & A_{22}B_{22} \end{array} \right) \]

と計算して良いことになります。 ですから、あとは、区分けによりあらわれた行列 \(A_{11}\)\(B_{11}\) の積と \(A_{22}\)\(B_{22}\) の積を計算すればよいわけです。すると、

\[ \begin{align} &A_{11}B_{11}= \left(\begin{array}{rr} 1 & -1 \\ 0 & 2 \end{array}\right) \left(\begin{array}{rr} 2 & 1 \\ 0 & 1 \end{array}\right) =\left(\begin{array}{rr} 2 & 0 \\ 0 & 2 \end{array}\right) ,\\[6pt] &A_{22}B_{22}= \left(\begin{array}{rr} -2 & 3 & 1 \\ 1 & 1 & -2 \end{array}\right) \left(\begin{array}{rr} 1 & 1 \\ 2 & 3 \\ 3 & -1 \end{array}\right) =\left(\begin{array}{rr} 7 & 6 \\ 9 & 2 \end{array}\right) \end{align} \]

となるので

\[ AB=\left( \begin{array}{rrrr} 2 & 0 & 0 & 0\\ 0 & 2 & 0 & 0\\ 0 & 0 & 7 & 6\\ 0 & 0 & 9 &2 \end{array}\right) \]

となります。

まとめ

行列にいくつかの縦の線と横の線を引き、区画に分けて考えたものを行列の区分けといいます。

行列 \(A\) と 行列 \(B\) の積を作ることができるとき、\(A\) の列の分け方と \(B\) の行の分け方が同じになるように区分けをすると、積 \(AB\) は区分けされた \(A\)\(B\) を使い普通の行列の積を求めるように計算できます。

このような計算は、特に区分けされた区画の中に零行列 \(O\) があるときに役立ちます。

行列とその演算(3) 行列とその演算(5)