固有ベクトルの観点から線形変換を掌握する

線形代数において、固有値固有ベクトルの話題は花形である。これらは理論的に美しいだけでなく、応用上様々な場面に登場し、重宝されている。中でも固有値が力を発揮するのは、やはり行列の対角化を行う時であろう。すなわち、n次正方行列 Aがある条件を満たすと、ある変換行列 Pが存在して P^{-1} A Pが対角行列になるのである。

では、対角化が可能となるための「ある条件」とは一体なんだろう?それは、固有値の (固有方程式の解としての) 重複度と、その固有値に対応する固有空間の次元が全ての固有値に対して等しいことである。これは対角化可能であるための必要十分条件となっている。

そう、固有値というのは実に厄介で、例えば固有方程式を解いた結果、 \lambdaが重解として得られたとしても、 \lambdaに対応する固有空間は必ずしも2次元になるとは限らないのである。

以上の事実から、行列は固有値の数と重複度、および固有ベクトルの次元によって、いくつかの種類に分類出来そうな気がしてくる。そのように分類された行列のクラスは、それぞれ何か特徴的な性質を持つのだろうか?

本稿ではこのぼんやりとした疑問の答えに迫るべく、前半は対角化について調べ、後半は具体例を頼りに固有値・固有空間が反映する行列の性質について調べてみようと思う。

対角化とは何か?

まずは対角化について考えてみよう。対角化と言えば P^{-1} A Pという変換の仕方が特徴的である。これの意味するところを考えることによって、対角化について理解を深めていこう。

線形変換の表現

行列は線形変換と密接な関係にある。すなわち、任意の線形変換は行列によって表現することができる。 P^{-1} A Pの意味を理解する上では、Aをある線形変換の表現行列と捉えるのがよい。

まず、線形変換の定義を[1]より引用する。

線形変換
 K上の線形空間 Vから K上の線形空間 V'への写像 Tが二条件
 \displaystyle{
\begin{eqnarray}
&& T({\bf x} + {\bf y}) = T({\bf x}) + T({\bf y}) \\
&& T(a{\bf x}) = aT({\bf x})
\end{eqnarray}
}
を充すとき,  T Vから V'への線形写像と言う.
・・・ (中略) ・・・
とくに,  Vから V自身への線形写像を,  V線形変換と言う.

 Vの次元をnとする。 Vの1つの基底を {\bf e}_1,  {\bf e}_2, \cdots ,  {\bf e}_nとすると、 Vの任意の元は以下のように基底の線型結合で表すことができる。

 \displaystyle{
{\bf v} = \sum_{i=1}^n x_i {\bf e}_i
}

ここで、 {\bf v} Vの線形変換 Tで写したものはやはり Vの元となる。よって以下のように同じ基底で表すことができる。

 \displaystyle{
T({\bf v}) = \sum_{i=1}^n x_i' {\bf e}_i
}

すると、変換前後の係数の間には以下のような関係が成立する。

 \displaystyle{
 \left( \begin{array}{c}
      x_1' \\
      x_2' \\
      \vdots \\
      x_n'
    \end{array} \right)_e
  = \left( \begin{array}{cccc}
      a_{11} & a_{12} & \ldots & a_{1n} \\
      a_{21} & a_{22} & \ldots & a_{2n} \\
      \vdots & \vdots & \ddots & \vdots \\
      a_{n1} & a_{n2} & \ldots & a_{nn}
    \end{array} \right)
 \left( \begin{array}{c}
      x_1 \\
      x_2 \\
      \vdots \\
      x_n
    \end{array} \right)_e
}

上の行列 A = (a_{ij})が線形変換 Tの表現行列である。両辺のベクトルの右下にeと書いたのは、これが基底 {\bf e}_iによるベクトルであることを示している。表現行列を簡潔に Aと表した式は以下のようになる。

 \displaystyle{
 \left( \begin{array}{c}
      x_1' \\
      x_2' \\
      \vdots \\
      x_n'
    \end{array} \right)_e
  = A
 \left( \begin{array}{c}
      x_1 \\
      x_2 \\
      \vdots \\
      x_n
    \end{array} \right)_e
}

基底の取り替え

次に、線形変換 T Vの別の基底で表現するとどうなるか考えてみよう。そのような基底を {\bf f}_1,  {\bf f}_2, \cdots ,  {\bf f}_nとする。すると、先ほどと同じように変換前後のベクトルは以下のように表される。

 \displaystyle{
{\bf v} = \sum_{i=1}^n y_i {\bf f}_i
}

 \displaystyle{
T({\bf v}) = \sum_{i=1}^n y_i' {\bf f}_i
}

基底の取り替えにおいて重要な考え方は、元の基底に対する表現行列 Aをできる限り活かすことである。そのために、 Aではなく入力として与えるベクトルの方を変換することを考える。これを実現するためには、以下のような行列 Pを利用する。

 \displaystyle{
 \left( \begin{array}{c}
      x_1 \\
      x_2 \\
      \vdots \\
      x_n
    \end{array} \right)_e
=
P \left( \begin{array}{c}
      y_1 \\
      y_2 \\
      \vdots \\
      y_n
    \end{array} \right)_f
}

このような行列 Pを基底の取り替え行列と呼ぶ。これより、 Tは以下のように表現できる。

 \displaystyle{
P \left( \begin{array}{c}
      y_1' \\
      y_2' \\
      \vdots \\
      y_n'
    \end{array} \right)_f
  = A
P \left( \begin{array}{c}
      y_1 \\
      y_2 \\
      \vdots \\
      y_n
    \end{array} \right)_f
}

異世界を旅して帰還する

基底の変換後の式の両辺に P^{-1}をかけると以下のようになる。

 \displaystyle{
 \left( \begin{array}{c}
      y_1' \\
      y_2' \\
      \vdots \\
      y_n'
    \end{array} \right)_f
  = P^{-1}A P
 \left( \begin{array}{c}
      y_1 \\
      y_2 \\
      \vdots \\
      y_n
    \end{array} \right)_f
}

 P^{-1}A Pが基底 {\bf f}_iを用いた場合の Tの表現行列となる。

普通はここで話はおしまいである。基底を変換した後の表現行列が求められたのだから、めでたしめでたしというわけだ。しかし、 P^{-1}A Pという形の変換は線形代数に限らずいろんな数学の分野でよく見かける形であり、もう一段抽象的なレベルでの意味がある。これを少し掘り下げて考えてみよう。

まず、行列 Aは基底 {\bf e}_iの世界で表現されるベクトルに対して適用可能な行列である。これを別の世界のベクトル、すなわち、基底 {\bf f}_iで表現されるベクトルに適用したいと思ったら、一度 {\bf f}_iの世界から {\bf e}_iの世界に移動する必要がある。すると、移動後のベクトルには Aを適用することができる。最後に、 Aを適用して得られたベクトルを元の世界に戻してやれば、結局 {\bf f}_iの世界のベクトルに Aを適用出来たことになる。以下に図を示す。

f:id:peng225:20180917213651p:plain

このように P^{-1}, Pで変換を挟み込むことは、その変換が適用可能な世界へと移動し、変換が終わったら元の世界に戻してやるような効果がある。これが線形変換の表現行列を別の基底で表したベクトルに適用できるからくりである。

対角化は座標変換

ここまで座標変換の話ばかりしてきた訳だが、座標変換と対角化の関係について述べておく。ずばり対角化とは、線形変換の基底を固有ベクトルから成る基底に変換する操作のことである。そして、対角化可能であるとは、基底となるような固有ベクトルの組が存在することを意味している。

逆に、もし固有値の重複度より固有ベクトルの次元が小さいものが存在すると、対象となる線形空間の次元に対して固有ベクトルの本数が足りなくなってしまい、基底を作れなくなる。この場合は対角化不可能となる。

基底の取り替え行列 Pとしては、 Aのn個の列固有ベクトル {\bf p}_1, {\bf p}_2, \cdots, {\bf p}_nを並べた行列を取れば対角化できる。計算の過程を以下に示す。

 \displaystyle{
\begin{eqnarray}
P^{-1} A 
 \left( \begin{array}{cccc}
      {\bf p}_1 & {\bf p}_2 & \cdots & {\bf p}_n
    \end{array} \right)
 &=& P^{-1} \left( \begin{array}{cccc}
      \lambda_1 {\bf p}_1 & \lambda_2 {\bf p}_2 & \cdots & \lambda_n {\bf p}_n
    \end{array} \right) \\
 &=& \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{eqnarray}
}

固有値固有ベクトルは何に紐づくものか?

ここで注意点を1つ。世の中ではよく「行列の固有値」とか「行列の固有ベクトル」という言い方をする。これは別に間違っていない。実は、線形変換に対しても固有値固有ベクトルという概念が存在する。

まず固有値についてだが、行列の固有値 P^{-1}, Pのサンドイッチ変換に対して不変となる。そのため、線形変換の固有値とは「任意の基底に対する表現行列の固有値である」と定義しておけば、それは一意に定まる。

多様体微分幾何学なんかが代表的であるが、座標系に依存しない量や概念というのは、その数学的対象の本質的な性質を表していると考えられるため、一般にとても重要である。

一方、固有ベクトルは座標系の取り方によって変わる。このように、固有値固有ベクトルでは不変となる範囲が異なるので注意が必要である。

固有値・固有空間に着目した線形変換の分類

ここまでで固有値固有ベクトルとかなりお友達になれたはずなので、本題に入ろう。線形変換が固有値の数や重複度、また固有空間の次元とどのような関係にあるのかを調べてみよう。簡単のために、話を \mathbb{R}上2次の正方行列に絞る。

 \mathbb{R}上2次の正方行列は以下のように分類できる。

  1. 異なる2つの実固有値を持つ場合
  2. 1つの実固有値を持ち、固有空間の次元が2の場合
  3. 1つの実固有値を持ち、固有空間の次元が1の場合
  4. 固有値を持たない場合

以下では分類された各項目の線形変換がどのような振る舞いをするのか、例を用いながら調べてみる。

異なる2つの実固有値を持つ場合

例として以下の行列を考える。

 \displaystyle{
A = \left( \begin{array}{cc}
     1  & -1/4 \\
  -1/2 & 5/4 \\
    \end{array} \right)
}

 A固有値固有ベクトルは以下のようになる。

sage: A = matrix(QQ, [[1, -1/4], [-1/2, 5/4]])
sage: for var in A.eigenvectors_right():
....:     print var
....:     
(3/2, [   # 固有値1つ目
(1, -2)   # 固有ベクトル
], 1)     # 重複度
(3/4, [   # 固有値2つ目
(1, 1)    # 固有ベクトル
], 1)     # 重複度

この線形変換を可視化したものを以下に示す。

f:id:peng225:20180913002223p:plain

ここで、黒の矢印は基底、グレーの点線矢印は基底に Aを作用させて得られるベクトルである。赤の矢印は固有ベクトル、オレンジの点線矢印は固有ベクトル Aを作用させて得られるベクトルである。また、水色の矢印は、矢印の根元の位置ベクトルが、 Aによって矢印の先端に写ることを意味している。

これを見ると、Aの作用によって空間が2つの固有ベクトルの方向に伸び縮みしているのが分かる。これより、このタイプの線形変換は固有ベクトル方向の拡大・縮小を表すと考えられる。ただし、伸びるのか縮むのか、またその程度がどれくらいであるかは固有値によって決まる。

1つの実固有値を持ち、固有空間の次元が2の場合

例として以下の行列を考える。

 \displaystyle{
A = \left( \begin{array}{cc}
     2  & 0 \\
     0 & 2 \\
    \end{array} \right)
}

 A固有値固有ベクトルは以下のようになる。

sage: A = matrix(QQ, [[2, 0], [0, 2]])
sage: for var in A.eigenvectors_right():
....:     print var
....:     
(2, [     # 固有値
(1, 0),   # 固有ベクトル1つ目
(0, 1)    # 固有ベクトル2つ目
], 2)     # 重複度

この線形変換を可視化したものを以下に示す。

f:id:peng225:20180913002458p:plain

これを見ると、Aの作用によって空間が原点を中心に拡大されているのが分かる。これより、このタイプの線形変換は拡大・縮小を行うものと考えられる。

一点補足だが、このケースの線形変換の表現行列は単位行列の定数倍しかあり得ない。 Aのただ1つの固有値 \lambdaとすると、 Aを対角化した行列は \lambda Eとなる。対角化のための変換行列を Pとすると、結局以下のようになる。

 \displaystyle{
\begin{eqnarray}
P^{-1} A P &=& \lambda E \\
A &=& P (\lambda E) P^{-1} \\
A &=& \lambda E
\end{eqnarray}
}

よって A単位行列固有値倍となる。

1つの実固有値を持ち、固有空間の次元が1の場合

例として以下の行列を考える。

 \displaystyle{
A = \left( \begin{array}{cc}
     11/6 & -1/3 \\
       1/3  & 7/6
    \end{array} \right)
}

 A固有値固有ベクトルは以下のようになる。

sage: A = matrix(QQ, [[11/6, -1/3], [1/3, 7/6]])
sage: for var in A.eigenvectors_right():
....:     print var
....:     
(3/2, [   # 固有値
(1, 1)    # 固有ベクトル
], 2)     # 重複度

この線形変換を可視化したものを以下に示す。

f:id:peng225:20180913002520p:plain

これを見ると、原点を通る固有ベクトルによって引かれる直線より下側では右向きの、上側では左向きの流れがあるように見える。これより、このタイプの線形変換は固有ベクトルと平行な方向に歪みを与える働きがあると考えられる。

固有値を持たない場合

例として以下の行列を考える。

 \displaystyle{
A = \left( \begin{array}{cc}
     1   & -1/2 \\
    1/2 &   1
    \end{array} \right)
}

 A固有値固有ベクトルは以下のようになる。

sage: A = matrix(QQ, [[1, -1/2], [1/2, 1]])
sage: for var in A.eigenvectors_right():
....:     print var
....:     
(1 - 0.50000000000000000?*I, [(1, 1*I)], 1)    # 固有値が虚数
(1 + 0.50000000000000000?*I, [(1, -1*I)], 1)

この線形変換を可視化したものを以下に示す。

f:id:peng225:20180913002536p:plain

これを見ると、螺旋のような渦巻きが現れている。これより、このタイプの線形変換は回転と拡大・縮小の組み合わせになっていると考えられる。

まとめ

以上、線形変換についていろいろと調べてみた。その結果、線形変換は固有値固有ベクトルによっていくつかの種類に分類できそうだということが分かった。本稿では2次正方行列で表現される線形変換しか詳細に調べなかったが、3次以上についても類似の考察が可能だろうと推測される。3次までなら頑張って可視化できないこともないかもしれないので、機会があればトライしてみたい。

参考文系

[1]

線型代数入門 (基礎数学)

線型代数入門 (基礎数学)