某DL〇資格試験なんかそうですが、以下の文言が天下り的に示されることがあります。
「正方行列Aを正則行列Pと対角行列Λを用いて$ A=PΛP^{-1} $と表す」
いわゆる「固有値分解」というやつです。
ここでは、
なぜこんな分解をするのか?
このまことに都合のいい「正則行列P」「対角行列Λ」とは一体何なのか?
について、書きたいと思います。
※本稿では、$ A=PΛP^{-1} $を満たすPとΛが存在する正方行列Aのみを考えます。
※Λは「ラムダ」です。「A」と似ていて混同しやすいですが敢えて使用します。
固有値分解をしたい理由
ズバリ、Aのk乗 $ A^{k} $ を簡単に計算したいからです。
では$ A^{k} $の計算は、どういう場合に必要なのでしょう?
分かりやすいのは、時系列データです。
$ \boldsymbol{x}(t)=A\boldsymbol{x}(t-1) $
のように、ステップ毎の変化が行列Aであらわされる場合です。
この場合、既知の初期値 $ \boldsymbol{x}(0) $ を用いて、時刻t=kの時の値は
$ \boldsymbol{x}(k)=A^{k}\boldsymbol{x}(0) $
と表せます。
この$ A^{k} $をお手軽に計算したいわけです。
Aの累乗計算が簡単になる理由
とりあえずここでは、$ A=PΛP^{-1} $となる都合のいい「正則行列P」「対角行列Λ」が既知であるとします(これらが何であるかは後述します)。
$ A=PΛP^{-1} $ であることから、左右からそれぞれ$ P^{-1} $、$ P $をかけると、
$ P^{-1}AP=Λ $ となります。
以下、Λの累乗を計算していきます。
$ Λ=P^{-1}AP $
$ Λ^{2}=(P^{-1}AP)^{2}= (P^{-1}AP)(P^{-1}AP)=P^{-1}A(PP^{-1})AP=P^{-1}A^{2}P $
$ Λ^{3}=(P^{-1}AP)^{3}= (P^{-1}AP)(P^{-1}AP)(P^{-1}AP)=P^{-1}A(PP^{-1})A(PP^{-1})AP=P^{-1}A^{3}P $
:
$ Λ^{k}=P^{-1}A^{k}P $
となります。
$ Λ $は対角行列なので、 $ Λ^{k} $の計算は容易です。
ここで、左右からそれぞれ$ P $、$ P^{-1} $をかけると、
$ PΛ^{k}P^{-1}=A^{k} $
となります。
まともに$ A^{k} $を計算するより、こちらの方がずっと楽でしょう。
「正則行列P」「対角行列Λ」の正体
前掲の通り、$ A=PΛP^{-1} $を満たすPとΛが存在することを前提とします。
正方行列Aの形状をn行n列とします。
当然、Pもn行n列の正方行列です。
Pを縦ベクトル$ \boldsymbol{p_i} $を使って記述すると(iは列番号:1~n)、
$ P=( \boldsymbol{p_1}, \boldsymbol{p_2}, … , \boldsymbol{p_n} ) $
対角行列Λの形状もn行n列で、
Λ = \left(
\begin{array}{cccc}
λ_{11} & 0 & \ldots & 0 \\
0 & λ_{22} & \ldots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \ldots & λ_{nn}
\end{array}
\right)
と記述できます。
前掲の通り$ P^{-1}AP=Λ $であり、この左から$ P $をかけると、
$ AP=PΛ $
$ A( \boldsymbol{p_1}, \boldsymbol{p_2}, … , \boldsymbol{p_n} )=( \boldsymbol{p_1}, \boldsymbol{p_2}, … , \boldsymbol{p_n} )Λ $
これを列ごとに見ると(iは列番号:1~n)、
$ A\boldsymbol{p_i}=λ_{ii}\boldsymbol{p_i} $
となります。
ここまで来るとピンと来ると思います。
$ λ_{ii} $はAの固有値、$ \boldsymbol{p_i} $はAの固有ベクトルなのでした。
つまり、
「正則行列P」・・・Aの固有ベクトルを横に(列方向に)並べた行列
「対角行列Λ」・・・Aの固有値を↑と同じ横方向の順番で対角要素として並べた対角行列
これが、文字「λ」とか、Aと形が似ていて紛らわしい文字「Λ」を敢えて使用した理由です。
まとめ
「正方行列Aを正則行列Pと対角行列Λを用いて$ A=PΛP^{-1} $と表」したいのは、
$ PΛ^{k}P^{-1}=A^{k} $ の形に持ち込んで、$ A^{k} $を容易に計算したいから。
そしてこの「正則行列P」「対角行列Λ」の正体は、
「正則行列P」・・・Aの固有ベクトルを横に(列方向に)並べた行列
「対角行列Λ」・・・Aの固有値を↑と同じ横方向の順番で対角要素として並べた対角行列
なので、(あとはいつもの)Aの固有値と固有ベクトルの算出、をすればよい。