行列の計算方法のまとめ~線形代数で特に重要なもの3つを徹底理解!~

行列は空間を変換する写像(=関数)であり、線形変換においてなくてはならぬツールです。ここでは、この行列について、線形代数で非常に重要な以下の3つの計算方法を解説していきます。

  • ベクトルと行列の積
  • 正方行列と正方行列の積
  • 非正方行列と正方行列の積

この3つの計算は線形代数において特別に重要です。そして、これらを使いこなすには、単に計算ができるというだけでは不十分です。実際にこれらの計算にどういう意味があるのかも理解しておく必要があります。

このページでは、アニメーションを用いながら、これらの点についてわかりやすく解説していきます。これがあなたにとって大きな役に立てば嬉しく思います。

なお行列の足し算や引き算を入れるかどうかも考えましたが、これらは線形代数においてほとんど覚える意味がないので、このページでは省いています。

それでは始めましょう。

先に読んでおきたいページ
行列について理解するには、線形変換を理解しておくと良いです。これについては、『線形変換とは?誰でも必ず理解できるようにアニメーションで解説』で詳しく解説しているので、ぜひご確認ください。

目次

1. ベクトルと行列の積

まずはベクトルと行列の積を見ていきましょう。先にアニメーションを使って、この計算の意味を解説した後で、計算方法を解説します。

1.1.ベクトルと行列の積の幾何学的な意味

ベクトルと行列の積とは、以下のアニメーションで示している通り、「行列に入力したベクトルを、新しく出力されるベクトルに変化させる」という計算です。そのためベクトルと行列の積の解はベクトルになります。

例として、以下のアニメーションでは行列 \(A\) にベクトル \(\vec{x}\) を入力して、新しいベクトル \(\vec{y}\) に変換している様子、つまり \(\vec{y}=A\vec{x}\) を示しています。

このように行列とは、空間を線形変換するための写像(=関数)なのです。

なお実際には行列(=写像)は、以下のアニメーションで示しているように、特定のベクトルだけを変化させるのではなく、空間全体を変化させます。

このようにベクトルは、行列(=写像)による空間の変化の結果として変化しています。

1.2. ベクトルと行列の積の計算方法

それでは、これの計算方法を確認していきましょう。ベクトル \(\vec{v}\) と行列 \(A\) があるとき、積 \(A\vec{v}\) は次のように計算します。

2次元ベクトルと2次行列の積

\[
\begin{eqnarray}
A\vec{v}
=
\left[ \begin{array}{cc} a_{11} & a_{12} \\a_{21}&a_{22} \end{array} \right]
\left[ \begin{array}{cc} v_1 \\ v_2 \end{array} \right]
=
\left[ \begin{array}{cc}
a_{11}v_1+a_{12}v_2 \\
a_{21}v_1+a_{22}v_2 \end{array} \right]
\end{eqnarray}
\]

3次元ベクトルと3次行列の積

\[
A\vec{v}= \left[ \begin{array}{cc}
a_{11} & a_{12} & a_{13} \\
a_{21}& a_{22} & a_{23}\\
a_{31}& a_{32} & a_{33}
\end{array} \right]
\left[ \begin{array}{cc} v_1 \\ v_2 \\ v_3 \end{array} \right]
=
\left[ \begin{array}{cc}
a_{11}v_1 +a_{12}v_2+ a_{13}v_3 \\
a_{21}v_1+ a_{22}v_2 + a_{23}v_3\\
a_{31}v_1+ a_{32}v_2 + a_{33}v_3
\end{array} \right]
\]

1.3. 練習問題

以下にベクトルと行列の積の計算問題を用意しています。計算方法を身につけるために、ぜひ一度はご自身で解いてみてください。

【練習問題】2次元ベクトルと2次行列の積

問題:以下の2次元ベクトルと2次行列の積を求めよ。

\[
A= \left[ \begin{array}{cc} 2 & 0 \\ 1 & 2 \end{array} \right]
,\hspace{3mm}
\vec{v}= \left[ \begin{array}{cc} 2 \\ 1 \end{array} \right]
\]

解答

これらの積は次のように計算します。

\[
\begin{eqnarray}
A\vec{v}
=
\left[ \begin{array}{cc} 2 & 0 \\1&2 \end{array} \right]
\left[ \begin{array}{cc} 2 \\ 1 \end{array} \right]
&=&
\left[ \begin{array}{cc}
2\cdot2+0\cdot1 \\
1\cdot2+2\cdot1 \end{array} \right]\\
&=&
\left[ \begin{array}{cc}
4+0 \\
2+2 \end{array} \right]\\
&=&
\left[ \begin{array}{cc} 4 \\ 4 \end{array} \right]
\end{eqnarray}
\]

【練習問題】3次元ベクトルと3次行列の積

問題:以下の3次行列と3次元ベクトルの積を求めよ。

次に以下の3次行列 \(M\) と3次元ベクトル \(\vec{v}\) を例に具体的に見てみましょう。

\[
A= \left[ \begin{array}{cc}
2 & 0 & 1 \\
0 & -1 & 0 \\
0 & 0 & 1
\end{array} \right]
,\hspace{3mm}
\vec{v}= \left[ \begin{array}{cc} 1 \\ -1 \\ 2 \end{array} \right]
\]

解答

これらの積は次のように計算します。

\[\begin{eqnarray}
A\vec{v}= \left[ \begin{array}{cc}
2 & 0 & 1 \\
0 & -1 & 0\\
0 & 0 & 1
\end{array} \right]
\left[ \begin{array}{cc} 1 \\ -1 \\ 2 \end{array} \right]
&=&
\left[ \begin{array}{cc}
2\cdot1 +0\cdot(-1)+ 1\cdot2 \\
0\cdot1+ (-1)\cdot(-1) + 0\cdot2\\
0\cdot1+ 0\cdot(-1) + 1\cdot2
\end{array} \right]\\
&=&
\left[ \begin{array}{cc}
2 +0+ 2 \\
0+ 1 + 0\\
0+ 0 + 2
\end{array} \right]\\
&=&
\left[ \begin{array}{cc} 4 \\ 1 \\ 2 \end{array} \right]
\end{eqnarray}\]

なお、『ベクトルと行列の積とは何か?計算方法と幾何学的な意味を徹底解説』ではベクトルと行列の積についてさらに詳しく解説しています。ぜひ一度ご確認ください。

2. 行列と行列の積

続いて行列と行列の積について解説します。上と同じく先にアニメーションで幾何学的な意味を理解した後で計算方法を見ていきましょう。

2.1. 行列と行列の積の幾何学的な意味

ベクトルと行列の積で解説したように、行列とは線形変換のための写像(=関数)です。具体的には、行列は空間を変化させることで入力したベクトルを新しいベクトルに変換して出力します。

そして、写像である行列同士の積とは、線形変換を連続して行ったときの基底ベクトル \(\hat{\imath}\) と \(\hat{\jmath}\) の最終的な行き先を示すものです(基底ベクトルについて厳密には、『基底ベクトルとは何か?アニメーションで一目で理解』で解説しています)

3次行列でも同じです。行列の積は、異なる行列で続けて線形変換したときの基底ベクトルの行き先です。ただし3次元の場合、基底ベクトルは \(\hat{\imath}\) 、 \(\hat{\jmath}\)、\(\hat{k}\) の3つになります。

これが行列の積です。

2.2. 行列と行列の積の計算方法

それでは行列の積の計算方法を確認しましょう。以下のように計算します。

\(2×2\) 行列の積

\[
\left[ \begin{array}{cc} a & b \\ c & d \end{array} \right]
\left[ \begin{array}{cc} e & f \\g & h \end{array} \right]
=
\left[ \begin{array}{cc} ae+bg & af+bh \\ ce+dg & cf+dh \end{array} \right]
\]

\(3×3\) 行列の積

\[\begin{eqnarray}
\left[ \begin{array}{ccc}
a_{11} & a_{12} & a_{13} \\
a_{21} & a_{22} & a_{23} \\
a_{31} & a_{32} & a_{33}
\end{array} \right]
\left[ \begin{array}{ccc}
b_{11} & b_{12} &b_{13} \\
b_{21} & b_{22} & b_{23} \\
b_{31} & b_{32} & b_{33}
\end{array} \right]
=
\left[ \begin{array}{ccc}
a_{11}b_{11} + a_{12}b_{21} +a_{13}b_{31} &
a_{11}b_{12} + a_{12}b_{22} +a_{13}b_{32} &
a_{11}b_{13} + a_{12}b_{23} +a_{13}b_{33} \\
a_{21}b_{11} + a_{22}b_{21} +a_{23}b_{31} &
a_{21}b_{12} + a_{22}b_{22} +a_{23}b_{32} &
a_{21}b_{13} + a_{22}b_{23} +a_{23}b_{33} \\
a_{31}b_{11} + a_{32}b_{21} +a_{33}b_{31} &
a_{31}b_{12} + a_{32}b_{22} +a_{33}b_{32} &
a_{31}b_{13} + a_{32}b_{23} +a_{33}b_{33}
\end{array} \right]
\end{eqnarray}\]

最初(右側)の行列の各列が、それぞれの基底ベクトルの行き先であることを理解すれば、この計算はベクトルと行列の積を、それぞれの基底ベクトルについて行っているのと同じものであることがわかります。それがわかれば、計算方法を暗記しようとする必要もなくなります。

このことは以下のアニメーションを見ると理解が進みますので、ぜひご覧ください。

なお重要な点として、行列の積は掛ける順番によって最終的な値が異なります。例えば、行列 \(A\) で線形変換した後に行列 \(B\) で線形変換した場合の積 \(BA\) と行列 \(B\) で線形変換した後に行列 \(A\) で線形変換した場合の積 \(AB\) は異なる値になります。ポイントは、後に適用する行列を左側に置いていくという点です。

2.3. 練習問題

以下に行列の積の練習問題を用意しています。理解を深めるために是非チャレンジしてみてください。解答の解説もありますので、あわせてご確認ください。

なお『行列の積(掛け算)とは何か?計算方法と意味が圧倒的によくわかる解説』ではさらに詳しく解説していますので、もしわからない点があった場合は必ず確認するようにしてください。

【練習問題】2次行列の積

問題:以下の2つの行列の積 \(BA\) を求めよ。

\[
\begin{eqnarray}
A = \left[\begin{array}{cc} 2 & 3 \\ 6 & 5 \end{array} \right],
\hspace{3mm}
B = \left[ \begin{array}{cc} 5 & 3 \\4 & 1 \end{array} \right]
\end{eqnarray}
\]

解説と解答

最初の行列 \(A\) による線形変換では、\(\hat{\imath}\) は \(A\) の一列目に移動します。ということは、\(\hat{\imath}\) の最終的な行き先は、以下のベクトルと行列の積で求めることができます。

\[
\begin{eqnarray}
\left[ \begin{array}{cc} 5 & 3 \\4 & 1 \end{array} \right]
\left[ \begin{array}{cc} 2 \\ 6 \end{array} \right]
\end{eqnarray}
=
\left[ \begin{array}{cc}
5\cdot2 + 3\cdot6\\
4\cdot2 + 1\cdot6
\end{array} \right]
=
\left[ \begin{array}{cc}
28\\
14
\end{array} \right]
\]

同じように、最初の行列 \(A\) による線形変換では \(\hat{\jmath}\) は \(A\) の二列目に移動するので、\(\hat{\jmath}\) の最終的な行き先は、以下のベクトルと行列の積で求めることができます。

\[
\begin{eqnarray}
\left[ \begin{array}{cc} 5 & 3 \\4 & 1 \end{array} \right]
\left[ \begin{array}{cc} 3 \\ 5 \end{array} \right]
\end{eqnarray}
=
\left[ \begin{array}{cc}
5\cdot3 + 3\cdot5\\
4\cdot3 + 1\cdot5
\end{array} \right]
=
\left[ \begin{array}{cc}
30\\
17
\end{array} \right]
\]

以上のことから解答は以下の通りです。

\[
\begin{eqnarray}
BA
=
\left[ \begin{array}{cc}
28&30\\
14&17
\end{array} \right]
\end{eqnarray}
\]

【練習問題】3次行列の積

問題:以下の2つの行列の積 \(BA\) を求めよ。

\[
\begin{eqnarray}
A = \left[\begin{array}{cc}
1 & 0 & 0 \\
0 & 1 & 1 \\
0 & 0 & 2
\end{array} \right],
\hspace{3mm}
B = \left[ \begin{array}{cc}
2 & 0 & 0 \\
0 & -1 & 0 \\
3 & 0 & -1
\end{array} \right]
\end{eqnarray}
\]

解説と解答

最初の行列 \(A\) による線形変換では、\(\hat{\imath}\) は \(A\) の一列目に移動します。ということは、\(\hat{\imath}\) の最終的な行き先は、以下のベクトルと行列の積で求めることができます。

\[
\begin{eqnarray}
\left[ \begin{array}{cc}
2 & 0 & 0 \\
0 & -1 & 0 \\
3 & 0 & -1
\end{array} \right]
\left[\begin{array}{cc}
1 \\
0 \\
0
\end{array} \right]
&=&
\left[ \begin{array}{cc}
2\cdot1 + 0\cdot0 + 0\cdot0 \\
0\cdot1 + (-1)\cdot0 + 0\cdot0 \\
3\cdot1 + 0\cdot0 + (-1)\cdot0
\end{array} \right]\\
&=&
\left[ \begin{array}{cc}
2 \\
0 \\
3
\end{array} \right]
\end{eqnarray}
\]

続いて最初の行列 \(A\) による線形変換では、\(\hat{\jmath}\) は \(A\) の二列目に移動します。ということは、\(\hat{\jmath}\) の最終的な行き先は、以下のベクトルと行列の積で求めることができます。

\[
\begin{eqnarray}
\left[ \begin{array}{cc}
2 & 0 & 0 \\
0 & -1 & 0 \\
3 & 0 & -1
\end{array} \right]
\left[\begin{array}{cc}
0 \\
1 \\
0
\end{array} \right]
&=&
\left[ \begin{array}{cc}
2\cdot0 + 0\cdot1 + 0\cdot0 \\
0\cdot0 + (-1)\cdot1 + 0\cdot0 \\
3\cdot0 + 0\cdot1 + (-1)\cdot0
\end{array} \right]\\
&=&
\left[ \begin{array}{cc}
0 \\
-1 \\
0
\end{array} \right]
\end{eqnarray}
\]

最後に最初の行列 \(A\) による線形変換では、\(\hat{k}\) は \(A\) の三列目に移動します。ということは、\(\hat{k}\) の最終的な行き先は、以下のベクトルと行列の積で求めることができます。

\[
\begin{eqnarray}
\left[ \begin{array}{cc}
2 & 0 & 0 \\
0 & -1 & 0 \\
3 & 0 & -1
\end{array} \right]
\left[\begin{array}{cc}
0 \\
-1 \\
2
\end{array} \right]
&=&
\left[ \begin{array}{cc}
2\cdot0 + 0\cdot1 + 0\cdot2 \\
0\cdot0 + (-1)\cdot1 + 0\cdot2 \\
3\cdot0 + 0\cdot1 + (-1)\cdot2
\end{array} \right]\\
&=&
\left[ \begin{array}{cc}
0 \\
1 \\
-2
\end{array} \right]
\end{eqnarray}
\]

以上のことから解答は次の通りです。

\[
\begin{eqnarray}
BA=
\left[ \begin{array}{cc}
2 & 0 & 0 \\
0 & -1 & -1 \\
3 & 0 & -2
\end{array} \right]
\end{eqnarray}
\]

3. 非正方行列と正方行列の積

続いて特殊な計算について解説します。これは、たとえばベクトルの内積を理解するために重要な意味を持ちます。最初は理解できなかったとしても、ベクトルの内積を学習する際にもう一度確認してみると良いでしょう。それまでに理解できなかったとしてもまったく問題ありません。

3.1. 非正方行列と正方行列の積の幾何学的な意味

さて行列と非正方行列の積は、「複数のベクトルを、行列に入力して、新しく出力される複数のベクトルに変化させる計算である」と考えることができます。しかし、この場合、出力される新しいベクトルの次元数は、入力したベクトルと異なるものになります。

なお、正方行列のそれぞれの列がベクトルを意味し、非正方行列が変換写像になります。実際に例をいくつか見ていきましょう。

2次元ベクトルの3次元化

以下の3行2列の行列と2行2列の行列の積を考えてみましょう。

\[\begin{eqnarray}
Ax=\left[ \begin{array}{cc}
5 & 0 \\
1 & 4 \\
1 & -1
\end{array} \right]
\left[\begin{array}{cc}
1 & 0 \\
0 & 1 \\
\end{array} \right]
=
\left[ \begin{array}{cc}
5 & 0 \\
1 & 4 \\
1 & -1
\end{array} \right]
\end{eqnarray}\]

正方行列 \(x\) の1列目は2次元の基底ベクトル \(\hat{\imath}\) を意味し、2列目は \(\hat{\jmath}\) を意味していると考えることができます。そして写像である行列 \(A\) の1列目は基底ベクトル \(\hat{\imath}\) の行き先を示し、2列目は \(\hat{\jmath}\) の行き先を示すものです

ということは、この行列の積 \(Ax\) は、以下のアニメーションで示しているように2次元の基底ベクトルのペアを、3次元の任意のベクトルに変換するものであることがわかります。

3次元ベクトルの2次元化

次に以下の2行3列の行列と3行3列の行列の積を考えてみましょう。

\[\begin{eqnarray}
Ax=\left[ \begin{array}{cc}
2 & 0 & 0\\
0 & 2 & -1\\
\end{array} \right]
\left[\begin{array}{cc}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{array} \right]
=
\left[ \begin{array}{cc}
2 & 0 & 0\\
0 & 2 & -1\\
\end{array} \right]
\end{eqnarray}\]

正方行列 \(x\) の1列目は3次元の基底ベクトル \(\hat{\imath}\) を、2列目は \(\hat{\jmath}\) を、3列目は \(\hat{k}\) を意味していると考えることができます。そして写像である行列 \(A\) の1列目は基底ベクトル \(\hat{\imath}\) の行き先を、2列目は \(\hat{\jmath}\)の行き先を、3列目は \(\hat{k}\) の行き先を示します。

つまり、この行列の積 \(Ax\) は、以下のアニメーションで示しているように3次元の3本の基底ベクトルを、2次元の任意のベクトルに変換するものであることがわかります。

2次元ベクトルの1次元化

それでは1行2列の行列と2行2列の行列の積ではどうでしょうか。以下をご覧ください。

\[\begin{eqnarray}
Ax=\left[ \begin{array}{cc}
1 & 2
\end{array} \right]
\left[\begin{array}{cc}
1 & 0 \\
0 & 1 \\
\end{array} \right]
=
\left[ \begin{array}{cc}
1 & 2
\end{array} \right]
\end{eqnarray}\]

これまでと同じように、正方行列 \(x\) の1列目は2次元の基底ベクトル \(\hat{\imath}\) を意味し、2列目は \(\hat{\jmath}\) を意味していると考えることができます。そして写像である行列 \(A\) の1列目は基底ベクトル \(\hat{\imath}\) の行き先を、2列目は \(\hat{\jmath}\)の行き先を示します。

つまり、この行列の積 \(Ax\) は以下のアニメーションで示しているように2次元ベクトルを、任意の1次元ベクトルに変換するものであることがわかります。

以上のように、非正方行列と正方行列の積は、正方行列の列ベクトルを、任意の次元数の異なるベクトルに変換するということなのです。

3.2. 非正方行列と正方行列の計算方法

それでは、続いて非正方行列と正方行列の積の計算方法について見ていきましょう。

結論から言うと、これは行列と行列の積の計算方法と同じなので、あらためて解説する必要はないのですが、念のため以下に載せておきます。

\(3×2\) 行列と \(2×2\) 行列の積

\[\begin{eqnarray}
Ax=\left[ \begin{array}{cc}
a_{11} & a_{12} \\
a_{21} & a_{22} \\
a_{31} & a_{32}
\end{array} \right]
\left[\begin{array}{cc}
x_{11} & x_{12} \\
x_{21} & x_{22} \\
\end{array} \right]
=
\left[ \begin{array}{cc}
a_{11}x_{11}+a_{12}x_{21} & a_{11}x_{12}+a_{12}x_{22} \\
a_{21}x_{11}+a_{22}x_{21} & a_{21}x_{12}+a_{22}x_{22} \\
a_{31}x_{11}+a_{32}x_{21} & a_{31}x_{12}+a_{32}x_{22}
\end{array} \right]
\end{eqnarray}\]

\(2×3\) 行列と \(3×3\) 行列の積

\[\begin{eqnarray}
Ax=\left[ \begin{array}{cc}
a_{11} & a_{12} & a_{13}\\
a_{21} & a_{22} & a_{23}\\
\end{array} \right]
\left[\begin{array}{cc}
x_{11} & x_{12} & x_{13} \\
x_{21} & x_{22} & x_{23} \\
x_{31} & x_{32} & x_{33}
\end{array} \right]
=
\left[ \begin{array}{cc}
a_{11}x_{11}+a_{12}x_{21}+a_{13}x_{31} & a_{11}x_{12}+a_{12}x_{22}+a_{13}x_{32} & a_{11}x_{13}+a_{12}x_{23}+a_{13}x_{33}\\
a_{21}x_{11}+a_{22}x_{21}+a_{23}x_{31} & a_{21}x_{12}+a_{22}x_{22}+a_{23}x_{32} & a_{21}x_{13}+a_{22}x_{23}+a_{23}x_{33}\\
\end{array} \right]
\end{eqnarray}\]

\(1×2\) 行列と \(2×2\) 行列の積

\[\begin{eqnarray}
Ax=\left[ \begin{array}{cc}
a_{11} & a_{12}
\end{array} \right]
\left[\begin{array}{cc}
x_{11} & x_{12} \\
x_{21} & x_{22} \\
\end{array} \right]
=
\left[ \begin{array}{cc}
a_{11}x_{11}+a_{12}x_{21} & a_{11}x_{12}+a_{12}x_{22}
\end{array} \right]
\end{eqnarray}\]

以上のように計算方法は正方行列の積とまったく同じです。

4. まとめ

以上が、線形代数において非常に重要な、行列についての3つの計算です。一つ一つしっかりと押さえておきましょう。

実のところ、現在はコンピュータのおかげで行列の計算は一瞬で行うことができます。しかも、間違える心配が一切ありません。したがって、そのような計算方法よりも幾何学的な意味を理解することの方がはるかに重要です。

数学に限らず、コンピューターサイエンスや工学などの偉大な発見のほとんどは、ここで解説したような幾何学的な発想から生まれているのです。

ぜひ、このページが役に立ったなら嬉しく思います。

Python初心者におすすめのプログラミングスクール

「未経験からでもPythonを学べるプログラミングスクールを探しているけど、色々ありすぎてわからない」なら、次の3つのプログラミングスクールから選んでおけば間違いはありません。

Aidemy Premium:全くの初心者ができるだけ効率よく短期間で実務的に活躍できるAI人材になることを目的とした講座。キャリアカウンセリングや転職エージェントの紹介などの転職支援も充実しており、受講者の転職成功率が高い。

AIジョブカレPythonの基本をおさえた人が、実際に機械学習やディープラーニングを活用できるようになるための講座。転職補償型があるなどキャリア支援の内容が非常に手厚く、講師の質も最高クラス。コスパ最高。Python初心者用の対策講座もある。

データミックスプログラミング経験者のビジネスマンが、更なるキャリアアップのためにデータの処理方法を学んでデータサイエンティストになるための講座。転職だけでなく起業やフリーランスとして独立する人も多い。Python初心者用の対策講座もある。

特に、あなたが以下のような目標を持っているなら、この中から選んでおけば間違いはないでしょう。

・未経験からPythonエンジニアとして就職・転職したい
・AIエンジニアやデータサイエンティストとしてキャリアアップしたい
・起業やフリーランスを視野に入れたい

理由は「Python初心者のためのおすすめプログラミングスクール3選」で解説しています。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる