行列の計算方法と線形式の行列表現

本記事はスキルチェックリストの[データサイエンス力 No.19]「行列同士、および行列とベクトルの計算方法を正しく理解し、複数の線形式を行列の積で表現できる」に対応しています。

行列とは?

かつて高校の数学Cで扱われていた「行列」ですが、2012年からは数学Cの廃止と共に行列も履修科目から消滅してしまいました。
数学C自体を履修しない選択もできたので、「行列」に馴染みがないという方も多いかもしれませんね。

アイ

「行列」って聞いてもラーメン屋くらいしか
思い浮かばないわね
この「行列」は人がずらっと並んだ列のことではないです

ロボ千代

行列は「線形代数」という数学の分野の基礎知識となります。

行列というのは簡単に言ってしまえば数値(データ)をまとめて扱う仕組みなのですが、
この場合の数値の扱い方には「スカラー」「ベクトル」「行列」の3種類があります。

スカラー
 5や38や100など、単なる1つの数値のことを「スカラー」といいます。

ベクトル
 数値(スカラー)を縦や横に1列に並べたものを「ベクトル」といいます。
$$
\left(
\begin{array}{ccc}
1 \\
4 \\
9
\end{array}
\right)
$$

行列
 最後に行列ですが、これは数値(スカラー)を複数の行と列で並べたものです。「m行n列の行列」または「m×n行列」と表します。
 下の行列は行が「2」列が「3」ありますので、「2×3行列」です。
$$
\left(
\begin{array}{ccc}
1 & 2 & 3 \\
4 & 5 & 6 \\
\end{array}
\right)
$$

行列は何の役に立つのか?

アイ

行列が何なのかはわかったけど、ただ数字を並べてるだけじゃん
これとAIとどんな関係があるわけ?

機械学習などもそうですが、データを使って予測を行うときには「連立一次方程式」を解かないといけない場面がたくさんあります。
この連立方程式を解くのに「行列」つまり「線形代数」の知識を使うと、とても効率よく解けるのです。

というより「連立方程式」を効率よく解くために
発展した学問が「線形代数」なのです

ロボ千代

では、連立一次方程式を行列を使ってどう解くか…の前に、行列の計算ルールをしっかり抑えておきましょう。

行列の計算

アイ

スカラーの場合は、四則演算ができるわよね?
ベクトルや行列はどうやって計算するの?

行列同士の計算

足し算・引き算

それぞれの行列の同じ行・同じ列同士の値を加減します。

行列同士の足し算
行列同士の引き算

掛け算

掛け算はちょっとややこしいです。
行列の同じ行・同じ列同士を掛け算するのではなく、
1行1列めと1行1列めを掛けたものと1行2列めと2行1列めを掛けたものを足したものが、1行1列めの計算結果になります。
これは図を見ていただいた方がわかりやすいと思います。

行列同士の掛け算1
行列同士の掛け算2

注意
交換法則は成り立たない
スカラー同士の掛け算であればどちらを先に掛けても結果は同じです。
5×10も10×5もどちらも結果は50です。
これを交換法則といいます。

ですが、行列同士の掛け算の場合、交換法則は成り立ちません。

割り算

行列に割り算は定義されていません。
ただ、実際に行列を使って連立方程式を解こうとする場合、割り算のようなことをやりたいケースがあります。
その場合、逆行列というものを使います。
詳細は別記事「逆行列の定義、および逆行列を求めることにより行列表記された連立方程式を解くことができることを理解している」を参照ください。

行列とスカラーの計算

足し算・引き算

行列の足し算・引き算は同じサイズの行列としかできません。
なので、スカラーと行列を足したり引いたりすることはできません。
行列とスカラーの足し算

掛け算

すべての成分をスカラー倍すればOKです。
行列とスカラーの掛け算

割り算

行列同士の割り算と同様にスカラーでの割り算も定義されていません。

行列とベクトルの計算

足し算・引き算

行列の足し算・引き算は同じサイズの行列としかできないので、ベクトルと行列を足したり引いたりすることはできません。

掛け算

m行n列の行列に対して、n次元の縦ベクトルとの積を求めることができます。

考え方は行列同士の掛け算と同じです。
n次元の縦ベクトルをn行1列の行列とみなして計算すればOKです。
行列とベクトルの掛け算

【m行n列の行列】と【n次元のベクトル】との掛け算の結果は、【m次元のベクトル】になります。

割り算

行列同士の割り算と同様にベクトルでの割り算も定義されていません。

線形式を行列の掛け算で表す

では、いよいよ本題です。
次のような連立一次方程式を考えます。

\(3x_1+2x_2=11\)
\(2x_1-5x_2=1\)
この連立一次方程式を行列を使って表してみましょう

ロボ千代

\(\begin{pmatrix}3 & 2 \\ 2 & -5 \end{pmatrix} \times \begin{pmatrix}x_1 \\ x_2 \end{pmatrix}=\begin{pmatrix}11 \\ 1\end{pmatrix}\)

\(\times\)の記号は省略できるので、下記のように表現できます。

\(\begin{pmatrix}3 & 2 \\ 2 & -5 \end{pmatrix} \begin{pmatrix}x_1 \\ x_2 \end{pmatrix}=\begin{pmatrix}11 \\ 1\end{pmatrix}\)

アイ

なんだか狐につままれたようだわ…
ホントに合ってるの?
ではこの行列を展開して確かめてみましょう

ロボ千代

\(\begin{eqnarray}
\begin{pmatrix}3 & 2 \\ 2 & -5 \end{pmatrix} \begin{pmatrix}x_1 \\ x_2 \end{pmatrix}&=&\begin{pmatrix}11 \\ 1\end{pmatrix}\\
\begin{pmatrix}3\times x_1+2\times x_2\\ 2\times x_1-5\times x_2 \end{pmatrix} &=&\begin{pmatrix}11 \\ 1\end{pmatrix}\\
\begin{pmatrix}3x_1+2x_2\\ 2x_1-5x_2 \end{pmatrix} &=&\begin{pmatrix}11 \\ 1\end{pmatrix}\\
\end{eqnarray}\)

ね?最初の連立一次方程式が出てきましたね

ロボ千代

アイ

うーん、確かに
では、次回の記事でこの行列で表現した連立一次方程式を解いて
\(x_1\)と\(x_2\)を求めていきますね
乞うご期待

ロボ千代

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です