線形代数のおいしいところをおさらいする
僕自身,数年前に学んだだけなので忘れている部分も多いが,
現在数学系専攻ということで少し復習をした.
実装面の有益な情報や,正確な一見小難しそうな内容はたくさんの優秀な方々が
本やネット上に公開されている.
そこで僕は線形代数の工学応用に関して,基本で一番大事だと思う内容を
噛み砕いて簡単に,ここにおさらいしておこうと思う.
線形代数の基本,行列とは何か
行列とは数の要素を,行と列の 2 次元に配列したものである.
\begin{align} A= \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{pmatrix} \end{align}
要素の横の並びを行,縦の並びを列という.
上の行列Aの要素の添字は,1つ目が行番号,2つ目が列番号を表している.
工学的には行列はシステムだと考えれば良い.
行と列はそれぞれ
- 列数(横幅):「入力」の次元数
- 行数(縦幅):「出力」の次元数
を表している.
つまり,
行列は,次元空間(入力)を次元空間(出力)に移す写像である.
と言える.
ちなみに,線型空間というのも本当は定義すべきだが,してもややこしい.
よってここでは,ベクトルの当たり前の計算ができる非常に空間だと思って欲しい.
行列と固有値
行列を考える際に,セットで考えられるのは固有ベクトルと固有値だ.
この2つは名前の通り,行列の固有な,本質的な量だと言える.
行列にとっての,名前やIDのようなものだと考えてもいいかもしれない.
少し真面目に,数学的な説明を書いてみようと思う.
ある正方行列,でないベクトル,あるスカラーの間に
\begin{align}
A \vec{x} =\lambda \vec{x}
\end{align}
また,このような関係式を固有値問題と呼ぶ.
固有ベクトルは線形変換,つまり行列を用いた変換によって向きが変わらないベクトル
である.
ベクトルは「長さ」と「方向」を持つが,変わらないのは「方向」だけで良い.
長さは変わってもいい.
では,変わる「長さ」を指定するのはなにか.
それが固有値である.
つまり,
固有値は,線形変換によって変化する固有ベクトルの長さの倍率を表す数値
といえる.
そのあたりの計算は次のページが見やすいので参考記事として貼っておく.
なんとなく,行列にとって固有だ,というのがわかったのではないだろうか.
行列の相似変形
次は固有値が一致するような行列は,どんなものか見ようと思う.
行列と同サイズの正方行列を導入する.
ある行列が
\begin{align}
B=S^{-1}AS
\end{align}
をみたすとき,行列とは相似であるという.
この相似な行列同士は,全く同じ固有値を持つ.
したがって,
この2つの行列はシステムとしての本質が変化していない事になる.
この事実が,僕の思う線形代数のおいしいところの重要ポイントになる.
行列の対角化とその工学的意味
ここが最も重要な部分だ.
先ほどの相似変形を思い出して欲しい.
正方行列は,特に形を指定していなかった.
ならば,正方行列をうまく選べば,と同じ固有値を持った
もっとシンプルな行列ができるかもしれない.
このアイデアについて詳しくみていこう.
まず,シンプルな形というのは対角行列のことだ.
対角行列とは
\begin{pmatrix}
a_1 & 0 & \cdots & 0 \\
0 & a_2 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & a_n
\end{pmatrix}
こんな形の行列のことをいう.
次に,行列をについて,正則行列(が存在するような行列)をうまく選び,
を対角行列にすることを行列の対角化という.
\begin{align}
A=
\begin{pmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn}
\end{pmatrix}
\Longrightarrow
P^{-1}AP=
\begin{pmatrix}
a_1 & 0 & \cdots & 0 \\
0 & a_2 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & a_n
\end{pmatrix}
\end{align}
この変形が,工学的においしいところになる.
行列は対角成分以外にも,成分を持つ.
したがって,なにか入力が来た場合,全ての入力が全ての出力に影響する.
しかし,対角化された行列の場合,
入力の各成分は,それぞれに対応した出力成分にしか影響しない.
そして,先ほど述べたように相似変換された行列は,本質が同じである.
つまり,行列の対角化は,
複雑なシステム(行列)を,単純な複数のサブシステムに分ける操作
ということができる.
ここまで説明したが,やはり言葉は限度があるので,図を用意した.
下の図が,伝えたい内容の全てである.
対角化によって,すっごくシンプルになっていることが一目瞭然だ.
まとめ
線形代数の面白いなと初めに思ったところがここだったので,
基礎的な内容も踏まえておさらいしてみた.
固有値計算の世界は,やり始めると鬱になるらしい.
シンプルなようで,応用まで考えると奥深く,僕もまだ全然応用はできない.
でも,最後の図は何か面白いな,と思う.
研究分野が固有値計算周りに近いが,
周辺の理論ばかりで実際に応用しようとしたことはまだない.
いつかしたいなぁ.