Chapter 02

線形代数 行列編

📌 行列はベクトルの集まり

ベクトルは数の集まりと説明しました.それに対して行列はベクトルの集まりと考えることができます.例えば

\vec{a} = \begin{pmatrix}1\\2\\3\end{pmatrix} \quad \vec{b} = \begin{pmatrix}4\\5\\6\end{pmatrix}

これら列ベクトルを行列にまとめると

\begin{pmatrix}\begin{pmatrix}1\\2\\3\end{pmatrix}&\begin{pmatrix}4\\5\\6\end{pmatrix}\end{pmatrix} = \begin{pmatrix}1&4\\2&5\\3&6\end{pmatrix}

また,次の行ベクトル

\vec{a} = \begin{pmatrix}1&2&3\end{pmatrix} \quad \vec{b} = \begin{pmatrix}4&5&6\end{pmatrix}

を行列にまとめると

\begin{pmatrix}\begin{pmatrix}1&2&3\end{pmatrix}\\ \begin{pmatrix}4&5&6\end{pmatrix}\end{pmatrix} = \begin{pmatrix}1&2&3\\4&5&6\end{pmatrix}

となります.このように行列はベクトルが並んでいるものと考えると,行列演算においてもベクトルの考え方が導入できてわかりやすいと思います.

📌 行列の表記

行列はAのように大文字で表します.わかりやすく\tilde{A}と表記することもあります.行列を一般的に表記すると

A = \begin{pmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{pmatrix}

となります.行列では各成分を要素ということもあります.成分の添字として2つの数字を使います.例えば 12 という添字は1行2列目の成分を指しています.右辺の成分をi,jを使って

A = \left[a_{ij}\right]

と略記することもあります.

📌 行列の演算

ベクトルのときは各成分ごとに演算しました.行列はベクトルの集まりなので,各ベクトルを成分と考え加減算を行うとわかりやすいです.

A = \begin{pmatrix}1&2&3\\4&5&6\end{pmatrix} \quad B = \begin{pmatrix}1&0&2\\3&1&0\end{pmatrix}

という2つの行列を考えます.この2つの行列の加減算は

\begin{aligned} A+B &= \begin{pmatrix}1&2&3\\4&5&6\end{pmatrix}+\begin{pmatrix}1&0&2\\3&1&0\end{pmatrix} = \begin{pmatrix}\begin{pmatrix}1&2&3\end{pmatrix}+\begin{pmatrix}1&0&2\end{pmatrix}\\\begin{pmatrix}4&5&6\end{pmatrix}+\begin{pmatrix}3&1&0\end{pmatrix}\end{pmatrix} = \begin{pmatrix}2&2&5\\7&6&6\end{pmatrix} \\ A-B &= \begin{pmatrix}1&2&3\\4&5&6\end{pmatrix}-\begin{pmatrix}1&0&2\\3&1&0\end{pmatrix} = \begin{pmatrix}\begin{pmatrix}1&2&3\end{pmatrix}-\begin{pmatrix}1&0&2\end{pmatrix}\\\begin{pmatrix}4&5&6\end{pmatrix}-\begin{pmatrix}3&1&0\end{pmatrix}\end{pmatrix} = \begin{pmatrix}0&2&1\\1&4&6\end{pmatrix} \end{aligned}

となります.ここでは行ベクトルで演算しましたが,列ベクトルでも構いません.行列の加減算を一般的に書くと

\begin{aligned} A+B &= \left[a_{ij}\right] + \left[b_{ij}\right] \\ A-B &= \left[a_{ij}\right] - \left[b_{ij}\right] \end{aligned}

行列の加減算では行と列の数が同じ行列どうしでないと計算できません.
同じ行列を減算すると

A-A = \begin{pmatrix}1&2&3\\4&5&6\end{pmatrix}-\begin{pmatrix}1&2&3\\4&5&6\end{pmatrix}= \begin{pmatrix}0&0&0\\0&0&0\end{pmatrix}

となって,すべての成分が0になります.これをゼロ行列といいます.

次に行列のスカラー倍は

4A = 4\times\begin{pmatrix}1&2&3\\4&5&6\end{pmatrix} = \begin{pmatrix}4\begin{pmatrix}1&2&3\end{pmatrix}\\4\begin{pmatrix}4&5&6\end{pmatrix}\end{pmatrix} = \begin{pmatrix}4&8&12\\16&20&24\end{pmatrix}

となります.これも一般的に書くと,スカラーをkとすれば

kA = \left[ka_{ij}\right]

となります.

📌 行列の乗算

行列の乗算はベクトルの内積を使います.ここで,もう一度ベクトルの内積を思い出してみましょう.いま,

\vec{a} = \begin{pmatrix}a_x,a_y,a_z\end{pmatrix} \quad \vec{b} = \begin{pmatrix}b_x,b_y,b_z\end{pmatrix}

の2つのベクトルを考えます.この内積は

\vec{a}\cdot\vec{b} = \begin{pmatrix}a_x&a_y&a_z\end{pmatrix}\begin{pmatrix}b_x\\b_y\\b_z\end{pmatrix} = a_x b_x + a_y b_y + a_z b_z

と与えられます.これは行ベクトルと列ベクトルの各成分どうしをかけていることがわかります.左の行ベクトルを行列にしてみると

A\cdot\vec{b} = \begin{pmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\end{pmatrix}\begin{pmatrix}b_1\\b_2\\b_3\end{pmatrix}

このとき,行列の行ベクトルごとに内積を計算すると

A\cdot\vec{b} = \begin{pmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\end{pmatrix}\begin{pmatrix}b_1\\b_2\\b_3\end{pmatrix} = \begin{pmatrix}a_{11}b_1+a_{12}b_2+a_{13}b_3\\a_{21}b_1+a_{22}b_2+a_{23}b_3\end{pmatrix}

となります.右の列ベクトルも行列にしてみると

\begin{aligned} A\cdot B &= \begin{pmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\end{pmatrix}\begin{pmatrix}b_{11}&b_{12}\\b_{21}&b_{22}\\b_{31}&b_{32}\end{pmatrix} \\ &= \begin{pmatrix}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_{21}b_{11}+a_{22}b_{21}+a_{23}b_{31}& a_{21}b_{12}+a_{22}b_{22}+a_{23}b_{32}\end{pmatrix} \end{aligned}

これをベクトルで表すと

\vec{a_1} = \begin{pmatrix}a_{11}&a_{12}&a_{13}\end{pmatrix} \quad \vec{a_2} = \begin{pmatrix}a_{21}&a_{22}&a_{23}\end{pmatrix} \quad \vec{b_1} = \begin{pmatrix}b_{11}\\b_{12}\\b_{13}\end{pmatrix} \quad \vec{b_2} = \begin{pmatrix}b_{21}\\b_{22}\\b_{23}\end{pmatrix} \\ \begin{aligned} A\cdot B &= \begin{pmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\end{pmatrix}\begin{pmatrix}b_{11}&b_{12}\\b_{21}&b_{22}\\b_{31}&b_{32}\end{pmatrix} \\ &= \begin{pmatrix}\vec{a_1}\\\vec{a_2}\end{pmatrix}\begin{pmatrix}\vec{b_1}&\vec{b_2}\end{pmatrix} = \begin{pmatrix}\vec{a_1}\cdot\vec{b_1}&\vec{a_1}\cdot\vec{b_2}\\ \vec{a_2}\cdot\vec{b_1}&\vec{a_2}\cdot\vec{b_2}\end{pmatrix} \end{aligned}

となります.ここで注意することは行列の乗算ではかけられる側の行成分の数とかける側の列成分の数が同じである必要があります.また,かけられる側の行数をm,かける側の列数をnとすると,これら行列の乗算をすればmn列の行列になります.

行列をベクトルの集まりと考えるのは理由があります.CGプログラミングでは行列を座標変換でよく使います.あるベクトルに行列を乗算すると回転や拡縮
されます.これを式で表すと,あるベクトルを\vec{p},行列をA,変換後のベクトルを\vec{p}'とすれば

\vec{p}' = \vec{p}A

ここで行列Aの成分が正規直交基底ベクトルだとすると

\vec{p}' = \vec{p}A = \begin{pmatrix}\vec{p}\cdot\vec{e}_x&\vec{p}\cdot\vec{e}_y&\vec{p}\cdot\vec{e}_z\end{pmatrix}

となります.内積の特性には「ベクトル方向の長さを測る」というのがあります.この式はベクトルpを行列Aの正規直交基底ベクトルをつかって成分ごとに長さを測っていることを表しています.例えば,行列Aが回転行列とすると,行列Aは回転された正規直交基底ベクトルの集まりです.これをベクトルpにかけると,回転された座標系でベクトルpを測り直しているわけです.結果的にベクトルpは回転されることになります.一般的に行列Aがベクトル\vec{p}から\vec{p}'写像 を表しているといいます.

次に,行列の乗算で重要な性質を見てみます.今,2つの行列

A = \begin{pmatrix}a&b\\c&d\end{pmatrix} \quad B = \begin{pmatrix}e&f\\g&h\end{pmatrix}

を乗算すると

\begin{aligned} AB &= \begin{pmatrix}a&b\\c&d\end{pmatrix}\begin{pmatrix}e&f\\g&h\end{pmatrix} = \begin{pmatrix}ae+bg&af+bh\\ce+dg&cf+dh\end{pmatrix} \\ BA &= \begin{pmatrix}e&f\\g&h\end{pmatrix}\begin{pmatrix}a&b\\c&d\end{pmatrix} = \begin{pmatrix}ae+cf&be+df\\ag+ch&bg+dh\end{pmatrix} \end{aligned}

というように,交換法則が成立しません.つまり

AB \neq BA

です.

📌 転置

行と列を入れかえた行列を 転置行列 といいます.行列Aの転置行列を{}^tAまたはA^Tと表します.

A = \begin{pmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\end{pmatrix} \quad {}^tA = \begin{pmatrix}a_{11}&a_{21}\\a_{12}&a_{22}\\a_{31}&a_{32}\end{pmatrix}

転置行列の表記方法を使えば列ベクトルと行ベクトルは次のような関係になります.

\begin{pmatrix}a_1\\a_2\\a_3\end{pmatrix} = {}^t\begin{pmatrix}a_1&a_2&a_3\end{pmatrix}

📌 単位行列

ある行列Aに別の行列Eを乗算するとAになるとき,行列E単位行列 といいます.これは数字の1に相当します.

AE = A \quad EA = A

行列の乗算で見たとおり,行列の行数と列数によって乗算で得られる行列の行と列の数が異なります.そのため,単位行列は行数と列数が同じ 正方行列 です.正方行列において,左上から右下への対角線上にある成分を 対角成分 といいます.次の行列の場合,対角成分はa_{11},a_{22},a_{33}です.

A = \begin{pmatrix}a_{11}&a_{12}&a_{13}\\a_{21}&a_{22}&a_{23}\\a_{31}&a_{32}&a_{33}\end{pmatrix}

単位行列は対角成分がすべて1,それ以外の成分がすべて0の行列です.以下は3行3列の単位行列です.

E = \begin{pmatrix}1&0&0\\0&1&0\\0&0&1\end{pmatrix}

ここで次の記号を導入します.

\delta_{ij} = \begin{cases}1 & (i=j)\\0 & (i\neq j)\end{cases}

これは クロネッカーのデルタ といいます.この記号はijが同じ場合(例えばa_{11},a_{22})に1となり,ijが異なる場合(例えばa_{12},a_{31})は0になります.これを使うと単位行列は

E = \left[\delta_{ij}\right]

と表わせます.

📌 逆行列

ある行列Aに別の行列Xを乗算すると単位行列Eになる行列Xを考えます.ちょうど逆数のような働きをします.

AX = E

これを2行2列の行列で考えてみます.

A = \begin{pmatrix}a&b\\c&d\end{pmatrix} \quad X = \begin{pmatrix}p&q\\r&s\end{pmatrix}

とすると

\begin{pmatrix}a&b\\c&d\end{pmatrix}\begin{pmatrix}p&q\\r&s\end{pmatrix} = \begin{pmatrix}1&0\\0&1\end{pmatrix}

の関係を満たします.これを計算すると

\begin{pmatrix}ap+br&aq+bs\\cp+dr&cq+ds\end{pmatrix} = \begin{pmatrix}1&0\\0&1\end{pmatrix}

これから,次の連立方程式を作ります

\begin{cases}ap+br = 1\\cp+dr = 0\end{cases} \quad \begin{cases}aq+bs = 0\\cq+ds = 1\end{cases}

これを解くと

p = \frac{d}{ad-bc} \quad r = \frac{-c}{ad-bc} \qquad q = \frac{-b}{ad-bc} \quad s = \frac{a}{ad-bc}

Xに代入すると

X = \begin{pmatrix}p&q\\r&s\end{pmatrix} = \frac{1}{ad-bc}\begin{pmatrix}d&-b\\-c&a\end{pmatrix}

で与えられます.このような行列を 逆行列 といい,行列Aの逆行列をA^{-1}と表記します.

AA^{-1} = A^{-1}A = E

逆行列は必ず存在するわけではなく,もしad-bc=0とすると分母が0になるため,無限大となって逆行列は存在しません.逆行列が存在する行列のことを 正則行列 または 正則 といいます.

ここで次の連立方程式を考えます.

\begin{cases} ax+by = p \\ cx+dy = q \end{cases}

これは行列とベクトルを使って

\begin{pmatrix}a&b\\c&d\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix} = \begin{pmatrix}p\\q\end{pmatrix}

と書けます.最初の行列を 係数行列 ,右辺を 定数項 といいます.これらは

A = \begin{pmatrix}a&b\\c&d\end{pmatrix} \quad \vec{x} = \begin{pmatrix}x\\y\end{pmatrix} \quad \vec{p} = \begin{pmatrix}p\\q\end{pmatrix}

と表記すると,連立1次方程式は

A\vec{x}=\vec{p}

と表わせます.このとき,Aが正則であれば解が存在し,逆行列を使って

\begin{aligned} A\vec{x} &= \vec{p} \\ A^{-1}A\vec{x} &= A^{-1}\vec{p} \\ \vec{x} &= A^{-1}\vec{p} \end{aligned}

解を求めることができます.実際に代入してみると

\vec{x} = \begin{pmatrix}x\\y\end{pmatrix} = A^{-1}\vec{p} = \frac{1}{ad-bc}\begin{pmatrix}d&-b\\-c&a\end{pmatrix}\begin{pmatrix}p\\q\end{pmatrix} = \frac{1}{ad-bc}\begin{pmatrix}dp-bq\\-cp+aq\end{pmatrix}

よって

x = \frac{dp-bq}{ad-bc} \quad y = \frac{aq-cp}{ad-bc}

と解を求めることができます.

📌 行基本変形

連立1次方程式を逆行列を使って解く方法を見てみました.2行2列の逆行列を求めるのはさほど難しくありませんが,行列の行列数が増えると計算が複雑になります.ここでは,逆行列を求める方法のうち,行基本変形を使った方法を説明します.まずは,連立1次方程式を行基本変形を使って解く方法から見ていきます.

次の連立方程式を解いてみます.

\begin{cases}ax+by=p \\ cx+dy = q \end{cases}

普通に解くと消去法や代入法を使って解きます.式を実数倍したり,お互いに足したり引いたりして整理していきます.このような操作をしても解は変わりません.そこで,まず連立1次方程式の係数と定数項を取り出して次のような行列を作ります.

\begin{pmatrix}a&b&\vdots&p\\c&d&\vdots&q\end{pmatrix}

このような行列を 係数拡大行列 といいます.この行列に対して,行に実数をかけたり,行どうし足したり引いたりして

\begin{pmatrix}1&0&\vdots&e\\0&1&\vdots&f\end{pmatrix}

のように左の部分が単位行列になるように変形すると,解が求められます.これは

\begin{cases}1\times x + 0\times y = e \\0\times x + 1\times y = f\end{cases}

という形の式を変形したものと考えることができます.実際に変形してみます.

\begin{pmatrix}a&b&\vdots&p\\c&d&\vdots&q\end{pmatrix}

ここで係数行列の各行をr_1 = \begin{pmatrix}a&b\end{pmatrix}, r_2 = \begin{pmatrix}c&d\end{pmatrix}と表します.右側に基本変形の内容を記載し,左側は変形後を表しています.

\begin{aligned} \begin{pmatrix}ac&bc&\vdots&cp\\ac&ad&\vdots&aq\end{pmatrix} & \quad \begin{matrix} r_1\times c\\r_2\times a \end{matrix} \\ \begin{pmatrix}ac&bc&\vdots&cp\\0&ad-bc&\vdots&aq-cp\end{pmatrix} & \quad \begin{matrix} r_2-r_1 \end{matrix} \\ \begin{pmatrix}1&\frac{bc}{ac}&\vdots&\frac{cp}{ac}\\0&ad-bc&\vdots&aq-cp\end{pmatrix} & \quad \begin{matrix} r_1\div ac \end{matrix} \\ \begin{pmatrix}1&\frac{bc}{ac}&\vdots&\frac{cp}{ac}\\0&\frac{bc}{ac}&\vdots&\frac{aq-cp}{ad-bc}\cdot\frac{bc}{ac}\end{pmatrix} & \quad \begin{matrix} r_2\times \frac{bc}{ac(ad-bc)} \end{matrix} \\ \begin{pmatrix}1&0&\vdots&\frac{cp}{ac}-\frac{aq-cp}{ad-bc}\cdot\frac{bc}{ac}\\0&\frac{bc}{ac}&\vdots&\frac{aq-cp}{ad-bc}\cdot\frac{bc}{ac}\end{pmatrix} & \quad \begin{matrix} r_1-r_2 \end{matrix} \\ \begin{pmatrix}1&0&\vdots&\frac{dp-bq}{ad-bc}\\0&\frac{bc}{ac}&\vdots&\frac{aq-cp}{ad-bc}\cdot\frac{bc}{ac}\end{pmatrix} & \quad \begin{matrix} \end{matrix} \\ \begin{pmatrix}1&0&\vdots&\frac{dp-bq}{ad-bc}\\0&1&\vdots&\frac{aq-cp}{ad-bc}\end{pmatrix} & \quad \begin{matrix} r_2\div \frac{bc}{ac} \end{matrix} \end{aligned}

よって

x = \frac{dp-bq}{ad-bc} \quad y = \frac{aq-cp}{ad-bc}

と解が求まりました.このような変形はすべて行どうしで行っているので行列の 行基本変形 といいます.

📌 逆行列を求める

行基本変形を使って連立1次方程式を解くことができました.これを応用して逆行列を求めることができます.次の行列の逆行列を求めてみます.

\begin{pmatrix}3&2\\2&1\end{pmatrix}

このとき逆行列を

X = \begin{pmatrix}e&f\\g&h\end{pmatrix}

とおいて

\begin{pmatrix}3&2\\2&1\end{pmatrix}\begin{pmatrix}e&f\\g&h\end{pmatrix} = \begin{pmatrix}1&0\\0&1\end{pmatrix}

を満たすXが逆行列となります.これを,拡大係数行列のように

\begin{pmatrix}3&2&\vdots&1&0\\2&1&\vdots&0&1\end{pmatrix}

として,行基本変形を行います.

\begin{aligned} \begin{pmatrix}1&1&\vdots&1&-1\\2&1&\vdots&0&1\end{pmatrix} & \quad \begin{matrix} r_1-r_2 \end{matrix} \\ \begin{pmatrix}1&1&\vdots&1&-1\\0&-1&\vdots&-2&3\end{pmatrix} & \quad \begin{matrix} r_2-2r_1 \end{matrix} \\ \begin{pmatrix}1&0&\vdots&-1&2\\0&-1&\vdots&-2&3\end{pmatrix} & \quad \begin{matrix} r_1+r_2 \end{matrix} \\ \begin{pmatrix}1&0&\vdots&-1&2\\0&1&\vdots&2&-3\end{pmatrix} & \quad \begin{matrix} (-1)r_2 \end{matrix} \end{aligned}

ここで,逆行列は

\begin{pmatrix}-1&2\\2&-3\end{pmatrix}

と求められます.実際に確かめてみると

\begin{pmatrix}3&2\\2&1\end{pmatrix}\begin{pmatrix}-1&2\\2&-3\end{pmatrix} = \begin{pmatrix}3\times -1 + 2\times 2&3\times 2 +2\times -3\\ 2\times -1+1\times 2&2\times 2+1\times -3\end{pmatrix} = \begin{pmatrix}1&0\\0&1\end{pmatrix}

となって,求めた解が逆行列となっていることがわかります.
なぜ,この操作で逆行列を求めることができるでしょうか.最初の式に戻って考えてみます.

\begin{pmatrix}3&2\\2&1\end{pmatrix}\begin{pmatrix}e&f\\g&h\end{pmatrix} = \begin{pmatrix}1&0\\0&1\end{pmatrix}

これを連立1次方程式にすると

\begin{cases}3e+2g=1\\2e+1g=0\end{cases} \quad \begin{cases}3f+2h=0\\2f+1h=1\end{cases}

この方程式を満たす解を求める必要があります.連立1次方程式を解くときは拡大係数行列を作って行基本変形を行いました.まずは,それぞれの拡大係数行列を作ると

\begin{pmatrix}3&2&\vdots&1\\2&1&\vdots&0\end{pmatrix} \quad \begin{pmatrix}3&2&\vdots&0\\2&1&\vdots&1\end{pmatrix}

係数行列は2つとも同じなので,行基本変形を使って変形する操作は両方とも同じになります.そこで定数項を2つ並べて同時に変形して解を求めています.この方法はすべての正方行列に対して使うことができます.任意のn次正方行列とn次単位行列をA,Eとすると(A,E)のかたちをした行列は,行基本変形で\left(E,A^{-1}\right)に変形できます.

📌 階数

一般的に,すべての連立方程式に解が存在するとは限りません.方程式の数が変数の数より多い場合には解が定まりません.また,変数の数が方程式の数よりも多い場合には,解が無数に存在することになります.

連立1次方程式から拡大係数行列をとりだして,行基本変形をおこなうと,成分がすべて0になる行ができることがあります.この場合,その行の方程式は意味をなしません.例えば3元連立1次方程式があったとき,拡大係数行列をとりだして,行基本変形を行い,成分がすべて0になる行が1つ出来たとすると,変数が3つ,方程式が2つしかないので解が無数に存在します.一般的に,行基本変形を行って,成分が0意外の行の数を,その行列の 階数 といいます.階数は実質的な方程式の数です.連立1次方程式を

A\vec{x}=\vec{b}

としたとき,行列の階数をrank Aとすると

rank A = rank\left[A,\vec{b}\right]

のときに解が存在します.変数n個の連立1次方程式A\vec{x}=\vec{b}が解をもつとき,

n - rankA

解の自由度 といいます.n = rank\left[A,\vec{b}\right]のとき,ただ1組の解が存在し,n > rank\left[A,\vec{b}\right]のとき,無数の解が存在します.

📌 参考文献

  • 村上雅人「なるほど線形代数」海鳴社,2001