元バイオ系

元バイオウェット系がデータサイエンスやらを勉強していくブログ。 基本自分用のまとめ。

固有値と固有ベクトル

固有値固有ベクトルについてメモ。
何をしているかはわかっているけど、何が起きているかがわかっていなかった。

  • 「固有」ってなんだよと思っている
  • 行列の掛け算で何が起きてるのかイメージがわかない

そんな人たちは参考になるかも。

数弱なので間違いがあれば教えてくれると助かります。

固有値固有ベクトルについておさらい

行列 {\displaystyle A} に対して $$ \begin{equation} \boldsymbol{A u} = \lambda \boldsymbol{u} \end{equation} $$

が成り立つ{\displaystyle \boldsymbol{0}}でないベクトル{\displaystyle \boldsymbol{u}}を行列{\displaystyle A}固有ベクトル{\displaystyle \lambda}をその固有値という。
{\displaystyle A}{\displaystyle n \times n}対称行列なら、{\displaystyle A}{\displaystyle n}個の固有値{\displaystyle \lambda_1,\ldots,\lambda_n}を持つ。また、{\displaystyle \boldsymbol{u}}の各成分間は互いに直交する。

ここで、初めの式をちょっと変形する $$ \begin{equation} \left(\lambda \boldsymbol{I} - \boldsymbol{A} \right) \boldsymbol{u} = \boldsymbol{0} \end{equation} $$ 定義より{\displaystyle \boldsymbol{u}} \neq  \boldsymbol{0}より $$ \begin{equation} | \lambda \boldsymbol{I} - \boldsymbol{A}| = \boldsymbol{0} \end{equation} $$

この式を固有方程式(特性方程式)と呼ぶ。

つまりなんなのか

行列{\displaystyle A}を左からかけることを、行列{\displaystyle A}を作用させるなんて物理では言うらしい。
つまり、ベクトルを伸ばしたり、縮めたり、回転したりして別のベクトルへ変換することを意味している。

ここで改めて式を眺めてみる。 $$ \begin{equation} \boldsymbol{A u} = \lambda \boldsymbol{u} \end{equation} $$ この式が意味するところは、「行列{\displaystyle A}による{\displaystyle \boldsymbol{u}}の変換は、結局{\displaystyle \boldsymbol{u}}{\displaystyle \lambda}倍することと同じ」ということ。
別の言い方をすれば、「行列による変換をしても、長さが{\displaystyle \lambda}倍変化するだけで向きが変わらないベクトル{\displaystyle \boldsymbol{u}}がある」ということで、そんなベクトルを固有ベクトルと呼んでいる。

基底変換

今、デカルト座標系にベクトル $$ \begin{align} \boldsymbol{v} = \left( \begin{array}{c} x \\ y \end{array} \right) \end{align} $$ が存在して、座標変換によって新たな表現を得ることを考える。
これはデカルト座標での表現なので、基底ベクトル{\displaystyle \boldsymbol{e}_x}, {\displaystyle \boldsymbol{e}_y}を使って大げさに書けば $$ \begin{align} \boldsymbol{v} &= x\boldsymbol{e}_x + y\boldsymbol{e}_y \\ &= x\left( \begin{array}{c} 1 \\ 0 \end{array} \right) +y\left( \begin{array}{c} 0 \\ 1 \end{array} \right) \\ &= \left(\begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array}\right) \left(\begin{array}{c} x \\ y \end{array}\right) \end{align} $$ となる。
この基底ベクトルを $$ \begin{align} \left(\begin{array}{cc} 1 & 0 \\ 0 & 1 \end{array}\right)\left(\begin{array}{c} x \\ y \end{array}\right)=\left(\begin{array}{cc} p_x & q_x \\ p_y & q_y \end{array}\right)\left(\begin{array}{c} x' \\ y' \end{array}\right) \end{align} $$ となるような別の基底ベクトル $$ \begin{align} \boldsymbol{p}=\left(\begin{array}{c} p_x \\ p_y \end{array}\right), \;\; \end{align} \boldsymbol{q}=\left(\begin{array}{c} q_x \\ q_y \end{array}\right) $$ で置き換えて、xy座標(デカルト座標)以外の任意のpq座標で表現できることがわかる。
ここでまた、最初の式をまた眺めてみる。 $$ \begin{equation} \boldsymbol{A u} = \lambda \boldsymbol{u} \end{equation} $$ この式の正方行列{\displaystyle A}は、ベクトルの変換意味しているのだった(ベクトル空間の線形写像)。
説明のために、 $$ \begin{equation} \boldsymbol{A} = \left(\begin{array}{cc} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array}\right), \;\; \boldsymbol{u} = \left(\begin{array}{c} u_1 \\ u_2 \end{array}\right) \end{equation} $$ とすると、 $$ \begin{align} \boldsymbol{A u}=\left(\begin{array}{cc} a_{11}\\ a_{21} \end{array}\right)u_1 +\left(\begin{array}{cc} a_{21} \\ a_{22} \end{array}\right)u_2 \end{align} $$ と書けることから、行列{\displaystyle A}の列成分は変換後の空間での基底ベクトルを表していたことがわかる。 つまり、{\displaystyle (u_1, u_2)}という数字をそのまま行列{\displaystyle A}による変換後の空間に渡すとどうなるか計算していただけのことだった。

正方行列の対角化

さて、行列{\displaystyle A}による変換前後で固有ベクトル{\displaystyle \boldsymbol{u}}はスケールが固有値{\displaystyle \lambda}倍変わるだけで向きが変わらないのであった。
ということは、

  1. 行列{\displaystyle A}による固有ベクトルのスケール変化だけを事前に調べておく(行列Aの固有ベクトル固有値を調べておく)
  2. 変換後の空間を、固有ベクトルを基底として表現する

という手順で行列{\displaystyle \boldsymbol{A}}による変換は簡単な式に置き換えられそうだ。

{\displaystyle n\times n}正方行列{\displaystyle A}によってn次元ベクトル{\displaystyle \boldsymbol{s}}が別のn次元ベクトル{\displaystyle \boldsymbol{t}}に変換される、 $$ \boldsymbol{t} = \boldsymbol{A s} $$ という変換を考える。ここに、行列{\displaystyle A}の右側に固有ベクトルを並べた行列 $$ \begin{align} P&=\left(\boldsymbol{p}_1, \ldots, \boldsymbol{p}_n\right) \\ \boldsymbol{p}_1 &= \left(\begin{array}{c} p_{11} \\ \vdots \\ p_{1n} \end{array}\right), \;\; \boldsymbol{p}_2 = \left(\begin{array}{c} p_{21} \\ \vdots \\ p_{2n} \end{array}\right), \;\; \cdots, \;\; \boldsymbol{p}_n = \left(\begin{array}{c} p_{n1} \\ \vdots \\ p_{nn} \end{array}\right) \end{align} $$ をねじ込んでみると $$ \boldsymbol{t} = \boldsymbol{(AP)(P^{-1}s)} $$ となる。{\displaystyle \boldsymbol{AP}}の部分は、一番最初に登場した式 $$ \begin{equation} \boldsymbol{A u} = \lambda \boldsymbol{u} \end{equation} $$ の左辺に対応している。異なるのは、固有ベクトルをひとつずつ扱っているのではなく、行列として並べてしまったことくらいである。じゃあ右辺はどうなってるのと思うかもしれないが、固有値と対応する固有ベクトルの積が以下のように並んでいるだけだ。 $$ \begin{equation} \boldsymbol{A P} = A \left(\boldsymbol{p}_1, \ldots, \boldsymbol{p}_n\right) = \left(\lambda_1 \boldsymbol{p}_1, \ldots, \lambda_n\boldsymbol{p}_n\right) \end{equation} $$

話を戻す。
$$ \boldsymbol{t} = \boldsymbol{(AP)(P^{-1}s)} $$ の式をよく見てみると、{\displaystyle \boldsymbol{s}\longrightarrow\boldsymbol{t}}とする変換だったのに、{\displaystyle \boldsymbol{P^{-1}s}\longrightarrow\boldsymbol{t}}のように見えてしまう。{\displaystyle \boldsymbol{AP}}を使いたいために格好が悪くなってしまった。

いっそのこと、{\displaystyle \boldsymbol{P^{-1}s}\longrightarrow\boldsymbol{P^{-1}t}}と考えてしまえばよさそうだ。つまり、{\displaystyle \boldsymbol{s}}{\displaystyle \boldsymbol{t}} をそれぞれ{\displaystyle \boldsymbol{P^{-1}}} が基底になっている空間に投げてしまってから考えるということだ。もし、元の座標系での値が知りたかったら{\displaystyle \boldsymbol{P}}を掛ければ元通りなので問題はない。 式で書くと

$$ \begin{equation} \boldsymbol{P^{-1} t} = \boldsymbol{(P^{-1}AP)(P^{-1}s)} \end{equation} $$

となる(有名な式らしい...知らんけど)。

なんだか大事になっているように見えるが、実はそうではない。\displaystyle \boldsymbol{P^{-1}AP}の部分が実は、固有値を対角成分に並べた対角行列になるからだ(\displaystyle \boldsymbol{P^{-1}AP}を対角行列にする操作を対角化と呼ぶ)。

$$ \begin{align} \boldsymbol{(P^{-1}AP)} &= \boldsymbol{D} \\ &= \left(\begin{array}{cccc} \lambda_1 & 0 & \ldots & 0 \\ 0 & \lambda_2 & \ldots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \ldots & \lambda_n \end{array}\right) \end{align} $$

つまり、行列{\displaystyle A}によるベクトルの変換は、{\displaystyle \boldsymbol{P^{-1}}}が基底となる空間へ投げてしまえば、そこでは基底ベクトルの方向へ固有値倍しただけだとみなせるということである。

固有ベクトルを基底とした空間へ投げるんじゃないの?」

と思われるかもしれないがこれは書き方の問題で、結局

$$ \begin{align} \boldsymbol{P^{-1}AP} =\boldsymbol{PAP^{-1}} = \boldsymbol{D} \\ \end{align} $$

なので、

$$ \begin{equation} \boldsymbol{P^{-1} t} = \boldsymbol{(P^{-1}AP)(P^{-1}s)} \end{equation} $$

でも

$$ \begin{equation} \boldsymbol{Pt} = \boldsymbol{(PAP^{-1})(Ps)} \end{equation} $$

でも同じことである。「固有ベクトルを基底とした空間に投げてから考える」という意味では後者の方がスッキリしているのかもしれない。