教材一覧
教材一覧
教材検索

行列

行列乗法(行列の積)

目次

Twitterで共有
メールで共有

行列の乗法

行列\(A,B\)を任意に選びます。ただし、\(A\)の列の個数は\(B\)の行の個数と一致するものとします。つまり、\begin{eqnarray*}A &=&\left( a_{ij}\right) =\begin{pmatrix}
a_{11} & a_{12} & \cdots & a_{1p} \\
a_{21} & a_{22} & \cdots & a_{2p} \\
\cdots & \cdots & \cdots & \cdots \\
a_{m1} & a_{m2} & \cdots & a_{mp}\end{pmatrix}\in M_{m,p}\left( \mathbb{R} \right) \\
B &=&\left( b_{ij}\right) =\begin{pmatrix}
b_{11} & b_{12} & \cdots & b_{1p} \\
b_{21} & b_{22} & \cdots & b_{2n} \\
\cdots & \cdots & \cdots & \cdots \\
b_{p1} & b_{p2} & \cdots & b_{pn}\end{pmatrix}\in M_{p,n}\left( \mathbb{R} \right)
\end{eqnarray*}です。\(A\)は\(m\times p\)行列であり、\(B\)は\(p\times n\)行列であり、\(A\)の列の個数と\(B\)の行の個数はともに\(p\)で一致しています。\(m\)と\(n\)は任意で構いません。行列\(A\)の第\(i\ \left( =1,\cdots,m\right) \)行は、\begin{equation*}\mathrm{row}\left( A,i\right) =\left( a_{i1},a_{i2},\cdots ,a_{ip}\right)
\end{equation*}であり、行列\(B\)の第\(j\ \left( =1,\cdots ,n\right) \)列は、\begin{equation*}\mathrm{col}\left( B,j\right) =\left(
\begin{array}{c}
b_{1j} \\
b_{2j} \\
\vdots \\
b_{pj}\end{array}\right)
\end{equation*}ですが、これらの行列はともに\(p\)個の成分を持つため、これらの行列をベクトルとみなした上で内積をとることができ、その結果、\begin{eqnarray*}\mathrm{row}\left( A,i\right) \cdot \mathrm{col}\left( B,j\right) &=&\left(
a_{i1},a_{i2},\cdots ,a_{ip}\right) \cdot \left( b_{1j},b_{2j},\cdots
,b_{pj}\right) \quad \because \text{行列をベクトルとみなす} \\
&=&a_{i1}b_{1j}+a_{i2}b_{2j}+\cdots +a_{ip}b_{pj}\quad \because \text{内積の定義}
\end{eqnarray*}を得ます。内積は1つの実数として定まるため、この内積を\(ij\)成分として持つような新たな行列\begin{equation*}\left( \mathrm{row}\left( A,i\right) \cdot \mathrm{col}\left( B,j\right) \right)
=\begin{pmatrix}
\mathrm{row}\left( A,1\right) \cdot \mathrm{col}\left( B,1\right) & \mathrm{row}\left( A,1\right) \cdot \mathrm{col}\left( B,2\right) & \cdots & \mathrm{row}\left( A,1\right) \cdot \mathrm{col}\left( B,n\right) \\
\mathrm{row}\left( A,2\right) \cdot \mathrm{col}\left( B,1\right) & \mathrm{row}\left( A,2\right) \cdot \mathrm{col}\left( B,2\right) & \cdots & \mathrm{row}\left( A,2\right) \cdot \mathrm{col}\left( B,n\right) \\
\cdots & \cdots & \cdots & \cdots \\
\mathrm{row}\left( A,m\right) \cdot \mathrm{col}\left( B,1\right) & \mathrm{row}\left( A,m\right) \cdot \mathrm{col}\left( B,2\right) & \cdots & \mathrm{row}\left( A,m\right) \cdot \mathrm{col}\left( B,n\right)
\end{pmatrix}\end{equation*}が定義可能です。これを\(A\)と\(B\)の(product)と呼び、\begin{equation*}AB=\left( \mathrm{row}\left( A,i\right) \cdot \mathrm{col}\left( B,j\right)
\right)
\end{equation*}で表記します。つまり、積\(AB\)の\(ij\)成分は\(A\)の第\(i\)行と\(B\)の第\(j\)行の内積と一致するということです。

行列\(A\)は\(m\)個の行を持つため\(i\in \left\{ 1,\cdots ,m\right\} \)であり、行列\(B\)は\(n\)個の列を持つため\(j\in \left\{ 1,\cdots ,n\right\} \)であるため、積\(AB\)の大きさは\(m\times n\)です。つまり、\begin{equation*}A\in M_{m,p}\left( \mathbb{R} \right) \wedge B\in M_{p,n}\left( \mathbb{R} \right) \Rightarrow AB\in M_{m,n}\left( \mathbb{R} \right)
\end{equation*}という関係が成り立ちます。積\(AB\)の行の個数は\(A\)の行の個数と一致し、積\(AB\)の列の個数は\(B\)の列の個数と一致するということです。

大きさ\(m\times p\)の行列\(A\)と大きさ\(p\times n\)の行列\(B\)をそれぞれ任意に選んだとき、\(A\)の列の個数と\(B\)の行の個数が\(p\)で一致することから、\(\mathrm{row}\left( A,i\right) \)と\(\mathrm{col}\left( B,j\right) \)の内積\(\mathrm{row}\left( A,i\right) \cdot \mathrm{col}\left(B,j\right) \)をとることができるとともに、それが1つの実数として定まることが保証されます。したがって、積\(AB\)は大きさ\(m\times n\)の行列として定まることが保証されます。つまり、\begin{equation*}\forall A\in M_{m,p}\left( \mathbb{R} \right) ,\ \forall B\in M_{p,n}\left( \mathbb{R} \right) :AB\in M_{m,n}\left( \mathbb{R} \right)
\end{equation*}が成り立つということです。このような事情を踏まえると、行列を成分とするそれぞれの順序対\(\left( A,B\right)\in M_{m,p}\left( \mathbb{R} \right) \times M_{p,n}\left( \mathbb{R} \right) \)に対して、やはり行列である積\(AB\in M_{m,n}\left( \mathbb{R} \right) \)を定める\(M_{m,p}\left( \mathbb{R} \right) \times M_{p,n}\left( \mathbb{R} \right) \)から\(M_{m,n}\left( \mathbb{R} \right) \)への二項演算が定義可能です。このような演算を行列乗法(matrix multiplication)と呼びます。順序対\(\left( A,B\right) \)に対して行列乗法を適用することを、\(A\)と\(B\)を掛ける(multiply)と言います。

例(行列乗法)
以下の2つの行列\begin{eqnarray*}
A &=&\begin{pmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22}\end{pmatrix}
\\
B &=&\begin{pmatrix}
b_{11} & b_{12} \\
b_{21} & b_{22}\end{pmatrix}\end{eqnarray*}に注目します。\(A\)と\(B\)はともに\(2\times 2\)行列であり、\(A\)の列の個数と\(B\)の行の個数はともに\(2\)であるため積\(AB\)が定義可能であり、\begin{eqnarray*}AB &=&\begin{pmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22}\end{pmatrix}\begin{pmatrix}
b_{11} & b_{12} \\
b_{21} & b_{22}\end{pmatrix}\quad \because A,B\text{の定義} \\
&=&\begin{pmatrix}
\left( a_{11},a_{12}\right) \cdot \left( b_{11},b_{21}\right) & \left(
a_{11},a_{12}\right) \cdot \left( b_{12},b_{22}\right) \\
\left( a_{21},a_{22}\right) \cdot \left( b_{11},b_{21}\right) & \left(
a_{21},a_{22}\right) \cdot \left( b_{12},b_{22}\right)\end{pmatrix}\quad \because \text{行列乗法の定義} \\
&=&\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{eqnarray*}となります。\(B\)の列の個数と\(A\)の行の個数はともに\(2\)であるため積\(BA\)もまた定義可能であり、\begin{eqnarray*}BA &=&\begin{pmatrix}
b_{11} & b_{12} \\
b_{21} & b_{22}\end{pmatrix}\begin{pmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22}\end{pmatrix}\quad \because A,B\text{の定義} \\
&=&\begin{pmatrix}
\left( b_{11},b_{12}\right) \cdot \left( a_{11},a_{21}\right) & \left(
b_{11},b_{12}\right) \cdot \left( a_{12},a_{22}\right) \\
\left( b_{21},b_{22}\right) \cdot \left( a_{11},a_{21}\right) & \left(
b_{21},b_{22}\right) \cdot \left( a_{12},a_{22}\right)\end{pmatrix}\quad \because \text{行列乗法の定義} \\
&=&\begin{pmatrix}
b_{11}a_{11}+b_{12}a_{21} & b_{11}a_{12}+b_{12}a_{22} \\
b_{21}a_{11}+b_{22}a_{21} & b_{21}a_{12}+b_{22}a_{22}\end{pmatrix}\end{eqnarray*}となります。具体例を挙げると、以下の2つの行列\begin{eqnarray*}
A &=&\begin{pmatrix}
1 & 2 \\
3 & 4\end{pmatrix}
\\
B &=&\begin{pmatrix}
1 & 1 \\
0 & 2\end{pmatrix}\end{eqnarray*}について、\begin{eqnarray*}
AB &=&\begin{pmatrix}
1 & 2 \\
3 & 4\end{pmatrix}\begin{pmatrix}
1 & 1 \\
0 & 2\end{pmatrix}\quad \because A,B\text{の定義} \\
&=&\begin{pmatrix}
\left( 1,2\right) \cdot \left( 1,0\right) & \left( 1,2\right) \cdot \left(
1,2\right) \\
\left( 3,4\right) \cdot \left( 1,0\right) & \left( 3,4\right) \cdot \left(
1,2\right)\end{pmatrix}
\\
&=&\begin{pmatrix}
1\cdot 1+2\cdot 0 & 1\cdot 1+2\cdot 2 \\
3\cdot 1+4\cdot 0 & 3\cdot 1+4\cdot 2\end{pmatrix}\quad \because \text{行列乗法の定義} \\
&=&\begin{pmatrix}
1 & 5 \\
3 & 11\end{pmatrix}\end{eqnarray*}である一方で、\begin{eqnarray*}
BA &=&\begin{pmatrix}
1 & 1 \\
0 & 2\end{pmatrix}\begin{pmatrix}
1 & 2 \\
3 & 4\end{pmatrix}\quad \because A,B\text{の定義} \\
&=&\begin{pmatrix}
\left( 1,1\right) \cdot \left( 1,3\right) & \left( 1,1\right) \cdot \left(
2,4\right) \\
\left( 0,2\right) \cdot \left( 1,3\right) & \left( 0,2\right) \cdot \left(
2,4\right)\end{pmatrix}
\\
&=&\begin{pmatrix}
1\cdot 1+1\cdot 3 & 1\cdot 2+1\cdot 4 \\
0\cdot 1+2\cdot 3 & 0\cdot 2+2\cdot 4\end{pmatrix}\quad \because \text{行列乗法の定義} \\
&=&\begin{pmatrix}
4 & 6 \\
6 & 8\end{pmatrix}\end{eqnarray*}となります。この例では、\begin{equation*}
AB\not=BA
\end{equation*}という関係が成立しています。つまり、行列乗法は交換律を満たすとは限りません。

例(行列乗法)
以下の2つの行列\begin{eqnarray*}
A &=&\begin{pmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22}\end{pmatrix}
\\
B &=&\begin{pmatrix}
b_{11} & b_{12} & b_{13} \\
b_{21} & b_{22} & b_{23}\end{pmatrix}\end{eqnarray*}に注目します。\(A\)は\(2\times 2\)行列である一方で\(B\)は\(2\times 3\)行列ですが、\(A\)の列の個数と\(B\)の行の個数はともに\(2\)であるため積\(AB\)が定義可能であり、\begin{eqnarray*}AB &=&\begin{pmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22}\end{pmatrix}\begin{pmatrix}
b_{11} & b_{12} & b_{13} \\
b_{21} & b_{22} & b_{23}\end{pmatrix}\quad \because A,B\text{の定義} \\
&=&\begin{pmatrix}
\left( a_{11},a_{12}\right) \cdot \left( b_{11},b_{21}\right) & \left(
a_{11},a_{12}\right) \cdot \left( b_{12},b_{22}\right) & \left(
a_{11},a_{12}\right) \cdot \left( b_{13},b_{23}\right) \\
\left( a_{21},a_{22}\right) \cdot \left( b_{11},b_{21}\right) & \left(
a_{21},a_{22}\right) \cdot \left( b_{12},b_{22}\right) & \left(
a_{21},a_{22}\right) \cdot \left( b_{13},b_{23}\right)
\end{pmatrix}\quad \because \text{行列乗法の定義} \\
&=&\begin{pmatrix}
a_{11}b_{11}+a_{12}b_{21} & a_{11}b_{12}+a_{12}b_{22} &
a_{11}b_{13}+a_{12}b_{23} \\
a_{21}b_{11}+a_{22}b_{21} & a_{21}b_{12}+a_{22}b_{22} &
a_{21}b_{13}+a_{22}b_{23}\end{pmatrix}\end{eqnarray*}となります。具体例を挙げると、以下の2つの行列\begin{eqnarray*}
A &=&\begin{pmatrix}
1 & 2 \\
3 & 4\end{pmatrix}
\\
B &=&\begin{pmatrix}
1 & 1 & 1 \\
0 & 2 & 3\end{pmatrix}\end{eqnarray*}について、\begin{eqnarray*}
AB &=&\begin{pmatrix}
1 & 2 \\
3 & 4\end{pmatrix}\begin{pmatrix}
1 & 1 & 1 \\
0 & 2 & 3\end{pmatrix}\quad \because A,B\text{の定義} \\
&=&\begin{pmatrix}
\left( 1,2\right) \cdot \left( 1,0\right) & \left( 1,2\right) \cdot \left(
1,2\right) & \left( 1,2\right) \cdot \left( 1,3\right) \\
\left( 3,4\right) \cdot \left( 1,0\right) & \left( 3,4\right) \cdot \left(
1,2\right) & \left( 3,4\right) \cdot \left( 1,3\right)
\end{pmatrix}
\\
&=&\begin{pmatrix}
1\cdot 1+2\cdot 0 & 1\cdot 1+2\cdot 2 & 1\cdot 1+2\cdot 3 \\
3\cdot 1+4\cdot 0 & 3\cdot 1+4\cdot 2 & 3\cdot 1+4\cdot 3\end{pmatrix}\quad \because \text{行列乗法の定義} \\
&=&\begin{pmatrix}
1 & 5 & 7 \\
3 & 11 & 15\end{pmatrix}\end{eqnarray*}となります。一方、\(B\)の列の個数\(3\)と\(A\)の行の個数\(2\)は異なるため積\(BA\)は定義不可能です。
例(行列乗法)
以下の2つの行列\begin{eqnarray*}
A &=&\left( a_{1},a_{2},\cdots ,a_{n}\right) \\
B &=&\left(
\begin{array}{c}
b_{1} \\
b_{2} \\
\vdots \\
b_{n}\end{array}\right)
\end{eqnarray*}に注目します。\(A\)は\(1\times n \)行列であり\(B\)は\(n\times 1\)行列ですが、\(A\)の列の個数と\(B\)の行の個数はともに\(n\)であるため積\(AB\)が定義可能であり、\begin{eqnarray*}AB &=&\left( a_{1},a_{2},\cdots ,a_{n}\right) \left(
\begin{array}{c}
b_{1} \\
b_{2} \\
\vdots \\
b_{n}\end{array}\right) \quad \because A,B\text{の定義} \\
&=&\left( \left( a_{1},a_{2},\cdots ,a_{n}\right) \cdot \left(
b_{1},b_{2},\cdots ,b_{n}\right) \right) \quad \because \text{行列乗法の定義} \\
&=&\left( a_{1}b_{1}+a_{2}b_{2}+\cdots +a_{n}b_{n}\right)
\end{eqnarray*}となります。\(B\)の列の個数と\(A\)の行の個数はともに\(1\)であるため\(BA\)もまた定義可能であり、具体的には、\begin{eqnarray*}BA &=&\left(
\begin{array}{c}
b_{1} \\
b_{2} \\
\vdots \\
b_{n}\end{array}\right) \left( a_{1},a_{2},\cdots ,a_{n}\right) \quad \because A,B\text{の定義} \\
&=&\begin{pmatrix}
\left( b_{1}\right) \cdot \left( a_{1}\right) & \left( b_{1}\right) \cdot
\left( a_{2}\right) & \cdots & \left( b_{1}\right) \cdot \left( a_{n}\right)
\\
\left( b_{2}\right) \cdot \left( a_{1}\right) & \left( b_{2}\right) \cdot
\left( a_{2}\right) & \cdots & \left( b_{2}\right) \cdot \left( a_{n}\right)
\\
\vdots & \vdots & \ddots & \vdots \\
\left( b_{n}\right) \cdot \left( a_{1}\right) & \left( b_{n}\right) \cdot
\left( a_{2}\right) & \cdots & \left( b_{n}\right) \cdot \left( a_{n}\right)\end{pmatrix}\quad \because \text{行列乗法の定義} \\
&=&\begin{pmatrix}
b_{1}a_{1} & b_{1}a_{2} & \cdots & b_{1}a_{n} \\
b_{2}a_{1} & b_{2}a_{2} & \cdots & b_{2}a_{n} \\
\vdots & \vdots & \ddots & \vdots \\
b_{n}a_{1} & b_{n}a_{2} & \cdots & b_{n}a_{n}\end{pmatrix}\end{eqnarray*}となります。したがって、この場合にも、\begin{equation*}
AB\not=BA
\end{equation*}となります。

例(行列乗法)
以下の\(1\times 1\)行列\begin{eqnarray*}A &=&\left( a\right) \\
B &=&\left( b\right)
\end{eqnarray*}に対して、\begin{eqnarray*}
AB &=&\left( a\right) \left( b\right) \quad \because A,B\text{の定義} \\
&=&\left( \left( a\right) \cdot \left( b\right) \right) \quad \because \text{行列乗法の定義} \\
&=&\left( ab\right)
\end{eqnarray*}となり、\begin{eqnarray*}
BA &=&\left( b\right) \left( a\right) \quad \because A,B\text{の定義} \\
&=&\left( \left( b\right) \cdot \left( a\right) \right) \quad \because \text{行列乗法の定義} \\
&=&\left( ba\right) \\
&=&\left( ab\right)
\end{eqnarray*}となるため、この場合には、\begin{equation*}
AB=BA
\end{equation*}が成り立ちます。

繰り返しになりますが、行列乗法は列の個数と行の個数が一致する2つの行列に対してのみ定義されます。列の個数と行の個数が異なる行列どうしに行列乗法を適用することはできません。

例(行列乗法)
以下の2つの行列\begin{eqnarray*}
A &=&\begin{pmatrix}
1 & 1 & 1 \\
0 & 2 & 3\end{pmatrix}
\\
B &=&\begin{pmatrix}
1 & 2 \\<