線形代数の基礎 第11回 - 逆行列

　本稿は、線形代数を独学でやり直し勉強した時のメモです。せっかくなのでアウトプットしようと思って書き始めました。詳しくは[第１回](http://qiita.com/nognog/items/8279935a96b4ca5dd375)の説明をご参照ください。

　今回は逆行列の説明を書こうと思います。この記事を書きながら、自分が大学1年生の時に線形代数でつまずいたポイントは何かなとつらつらと考えながら書いているのですが、正直、逆行列はそんなにはつまずいたポイントはなかったように記憶しています。「相変わらず掃き出し法で計算がめんどくさいな～。なんの意味があるのかな～。」と思ったくらいでしょうかね。。このため、今回の記事もさらっとポイントだけ書こうかなと思います。

#1. まず、逆行列を手計算する必要があるか？
　毎回似たようなことを書いていてすみませんが、まず、大学1年生の線形代数の授業以外では、逆行列を実際に手計算で解く機会は99%無いと思います。（ただし、後述のように、逆行列の性質を利用して式変形をしていくことはよくあるとは思います。）
　ちなみに、（ライブラリ等を使って）数値計算で逆行列を解くこともあまりないのではないかと思います。また、数値計算等の処理の過程で出てくる行列は必ずしも正則（[前回の記事](https://qiita.com/nognog/items/2d2344dc1d9ab118eddc#42-%E3%81%82%E3%82%8B%E8%A1%8C%E5%88%97%E3%81%AB%E6%AD%A3%E5%89%87%E3%81%AA%E8%A1%8C%E5%88%97%E3%82%92%E6%8E%9B%E3%81%91%E3%81%9F%E6%99%82%E3%81%AE%E3%83%A9%E3%83%B3%E3%82%AF)をご参照）であるとは限らないため、処理の過程で何も考えずに逆行列を求める計算を入れていると、とても安定しないシステムになってしまうと思います。また、正則である場合でも、限りなく正則でない状態に近づいてしまい、数値計算では逆行列が求まらずエラーになったり、巨大値が出てしまうといったこともあるように思います。


#2. 逆行列の定義
 ある正則な行列$A$に対して、$A^{-1}$が以下を満たすとき、$A^{-1}$は$A$の逆行列といいます。
$$
AA^{-1} = A^{-1}A = I
$$
ここで、$I$は単位行列（すべての対角成分が1、それ以外の成分が0の行列）です。まあ、この定義はそんなに難しくなくイメージできると思います。ちなみに、正則行列以外では逆行列は存在しません（詳細は後述）。

#3. 逆行列の意味：逆数の一般化
　次に、くどいかもしれませんが、逆行列の意味について考えてみます。まず、1次元、つまり、ベクトルでなくスカラー（ふつうの数字）を考えてみると、ある数$a$の逆数$a^{-1}$は$1/a$となります。この時、
$$
a \times a^{-1} = a \times \frac{1}{a} = 1
$$
となります。まあ、あたりまえですね。つまり、$a$との積が$1$になる数字が$a$の逆数ということですね。

　ここで、よく見ると（よく見なくても）、この式は、先ほどの逆行列の式と同じ形をしていますね。つまり、逆行列は、逆数を$n \times n$の行列に対して拡張したものということになります。

　次に、1次元の場合で、$a=0$だったらどうなるでしょうか？$1/0$は存在しないので、逆数は定義できません。ゼロ割ってやつですね。同様に、$n \times n$の時も、$A=0$の時は逆行列は定義されません。まあ、ここはイメージできると思います。
　さらに、実は、**$A$がフルランクでないとき（つまり正則でないとき）には、逆行列は定義されません！**つまり、逆行列が存在しない（＝正則でない）とは、ゼロ割の2次元以上への拡張というイメージができるということですね。

　また、逆行列は、正方行列（行と列の次元が同じ行列）にのみ定義されます。例えば、$2 \times 3$行列のような、行と列の次元が違う行列には定義されません。（$m \times n$の行列で、$m$と$n$の大きさが違うと、$AA^{-1}$のサイズと$A^{-1}A$のサイズが異なってしまうので）。
　ただし、この場合でも一般化逆行列というのもが定義できます。分野にもよるかも知れませんが、そんなには出てこないので、とりあえず出てきたときに調べるということで大丈夫だと思います。詳細はコメント欄もご参照ください。

　では、次に、なぜ正則でない行列には逆行列が存在しないのかを考えてみます。

#4. 正則でない行列に逆行列が存在しない理由

　まず、１次元の例をもう少し詳しく考えてみます。例えば、3を5倍して15になったときを考えてみると、
$$
3 \times 5 = 15
$$
となりますが、この15を元の数3に戻すためには、
$$
15 \times \frac{1}{5} = 3
$$
で元に戻ります。（当たり前ですが）

次に、3を0倍して0になってしまったものを元に戻したい時はどうなるでしょうか？
$$
3 \times 0 = 0
$$
となりますが、この0を元の数3に戻すためには、
$$
0 \times ? = 3
$$
ですが、**0は何倍しても0のままなので、どうしても戻しようがない**ですね。つまり、一度0になってしまったものは元に戻らないのです。体力が0にならない限りは復活できますが、一度０になるとゲームオーバーになってしまうみたいなものですね。

　実は、2次元以上の時も同様のことが起きています。[第９回](https://qiita.com/nognog/items/42f6a9e4839a7d8fbd63)で見たように、正則でない行列（＝フルランクでない）とは、変換先の次元が潰れてしまっている行列のことなのでした。つまり、変換先で、ある次元が0になってしまってるということですね。このため、この変換を元に戻しようとしても戻せないのです。このため、逆行列が定義できないのです。

　また、以上は回りくどい説明だったかも知れませんが、要は、３次元の立体を一度２次元の絵にしてしまったら、どう頑張っても元の３次元の立体は再現できないと考えるとイメージしやすいかも知れません。

#5. 直交行列について
　以上が、今回お伝えしたかった主な話題ですが、（尺が余ったので）、よく出てくるので、直交行列についてさらっと触れておきたいと思います。行列$A$が次の性質を満たす時に、行列$A$は直交行列であるといいます。
$$
AA^{t}=A^{t}A=I
$$
　直交行列の何が嬉しいかと言うと、逆行列の定義とよく見比べると、
$$
A^{-1}=A^{t}
$$
であることが分かります。つまり、逆行列が転置行列と言うことです。行と列を入れ替えるだけで逆行列が求まるなんて、とても計算が楽になりますね！

## 5.1. 直交行列の意味
　次に、さらに逆行列の話から少し逸れるかも知れませんが、ついでなので、直交行列の意味について簡単に触れておきます。$n \times n$の行列
$$
A=(\mathbf{a}\_1, \cdots, \mathbf{a}_n)
$$

を考えてみます。$A$が直交行列の時、定義より、
$$
\begin{matrix}
A^{t}A &=& 
\left(
\begin{matrix}
\mathbf{a}\_1^{t} \\\
\vdots \\\
\mathbf{a}\_n^{t} \\\
\end{matrix}
\right)
(\mathbf{a}\_1, \cdots, \mathbf{a}\_n) \\\
&=&
\left(
\begin{matrix}
\mathbf{a}\_1^t \mathbf{a}\_1 & \cdots & \mathbf{a}\_1^t \mathbf{a}\_n \\\
\vdots & \ddots & \vdots \\\
\mathbf{a}\_{n}^t \mathbf{a}\_1 & \cdots & \mathbf{a}\_n^t \mathbf{a}\_n
\end{matrix}
\right) \\\
&=&
\left(
\begin{matrix}
1 & \cdots & 0 \\\
\vdots & \ddots & \vdots \\\
0 & \cdots & 1
\end{matrix}
\right)
\end{matrix}
$$
が成り立ちます。つまり、

$$
|\mathbf{a}_i|^2=1
$$
$$
\mathbf{a}\_i \mathbf{a}\_j=0
$$
が成り立つと言うことです。これは、どう言うことかと言うと、行列$A$による、正規直交基底の変換先の基底ベクトルが、正規直交基底になると言うことです。（正規直交基底については[第３回](https://qiita.com/nognog/items/f6b6e64792ae1f8ac20c)をご参照ください。）
　さらに言うと、元々直交している座標系が、直交行列により、直交している座標系に変換されると言うことです。これはつまり、角度を保ったまま変換がされていると言うことなので、結論としては、直交行列による変換は回転となると言うことです！（ちょっと本題から逸れたことを色々書きすぎたかも知れません。。。）


#6. 逆行列に関連した公式のご紹介
　最後に、逆行列の基本的な性質を2つほどご紹介しておきます。冒頭に書きました通り、逆行列を手計算で計算することはほとんどありませんが、ここでご紹介する性質等を用いて式変形をしていくということはよくありますので、知っておいたほうがいいと思います。

(1) 行列の式の逆行列
$$
(AB)^{-1} = B^{-1}A^{-1}
$$
(2) 転置行列の逆行列
$$
(A^{t})^{-1} = (A^{-1})^{t}
$$

一応証明も載せておきます。

(1)の証明
$$
ABB^{-1}A^{-1}=AIA^{-1}=AA^{-1}=I
$$
より、
$$
(AB)(B^{-1}A^{-1})=ABB^{-1}A^{-1}=I
$$
よって、
$$
(AB)^{-1}=B^{-1}A^{-1}
$$

(2)の証明
まず、置換行列の性質から、
$$
(AB)^{t} = B^{t}A^{t}
$$
が成り立つ。（ちなみに、逆行列とは関係ありませんが、これも重要な性質です。）

これは要素ごとに書き下して見ればわかる。具体的には、
$$
(AB)\^{t}\_{ij}=(AB)\_{ji} = \sum_{k}A_{jk}B_{ki}
$$
$$
(B^{t}A^{t})\_{ij}=\sum_{k}B_{ki}A_{jk}
$$
ここで、$A\_{ij}$は、行列$A$の$ij$成分を表すものとします。

＊ちなみに、上記計算は、添字が面倒ですが、気合を入れて考えて見れば分かります。ポイントは、
$$
(AB)\_{ij}=\sum_{k}A_{ik}B_{kj}
$$
となるところです。これはもう公式として覚えておくと楽です。

次に、
$$
AA^{-1}=A^{-1}A=I
$$
の転置をとると、
$$
(AA^{-1})^{t}=(A^{-1}A)^{t}=I
$$
これに先ほどの転置行列の性質を当てはめると、
$$
(A^{-1})^{t}A^{t}=A^{t}(A^{-1})^{t}=I
$$
この式をよく見ると、積が$I$になっていることから、$A^{t}$の逆行列は、$(A^{-1})^{t}$になっていることが分かる。よって、
$$
(A^t)^{-1}=(A^{-1})^{t}
$$

#7. まとめ
　今回は逆行列についてご説明しました。これまでの回でご説明した、基底やランクの意味をよく理解していれば、逆行列について（特に、逆行列がどのような時に存在するか）は、すんなにご理解いただけるのではないかと思います。今回のご説明の意味がいまいちよく分からなかった方は、是非、これまでの回をおさらいしてみていただけましたらと思います。

　次回からは、固有値・固有・ベクトル・対角化等のご説明を書きたいと思います。