線形代数において、固有値と固有ベクトルの話題は花形である。これらは理論的に美しいだけでなく、応用上様々な場面に登場し、重宝されている。中でも固有値が力を発揮するのは、やはり行列の対角化を行う時であろう。すなわち、n次正方行列がある条件を満たすと、ある変換行列が存在してが対角行列になるのである。
では、対角化が可能となるための「ある条件」とは一体なんだろう?それは、固有値の (固有方程式の解としての) 重複度と、その固有値に対応する固有空間の次元が全ての固有値に対して等しいことである。これは対角化可能であるための必要十分条件となっている。
そう、固有値というのは実に厄介で、例えば固有方程式を解いた結果、が重解として得られたとしても、に対応する固有空間は必ずしも2次元になるとは限らないのである。
以上の事実から、行列は固有値の数と重複度、および固有ベクトルの次元によって、いくつかの種類に分類出来そうな気がしてくる。そのように分類された行列のクラスは、それぞれ何か特徴的な性質を持つのだろうか?
本稿ではこのぼんやりとした疑問の答えに迫るべく、前半は対角化について調べ、後半は具体例を頼りに固有値・固有空間が反映する行列の性質について調べてみようと思う。
対角化とは何か?
まずは対角化について考えてみよう。対角化と言えばという変換の仕方が特徴的である。これの意味するところを考えることによって、対角化について理解を深めていこう。
線形変換の表現
行列は線形変換と密接な関係にある。すなわち、任意の線形変換は行列によって表現することができる。の意味を理解する上では、Aをある線形変換の表現行列と捉えるのがよい。
まず、線形変換の定義を[1]より引用する。
の次元をnとする。の1つの基底をとすると、の任意の元は以下のように基底の線型結合で表すことができる。
ここで、をの線形変換で写したものはやはりの元となる。よって以下のように同じ基底で表すことができる。
すると、変換前後の係数の間には以下のような関係が成立する。
上の行列が線形変換の表現行列である。両辺のベクトルの右下にeと書いたのは、これが基底によるベクトルであることを示している。表現行列を簡潔にと表した式は以下のようになる。
基底の取り替え
次に、線形変換をの別の基底で表現するとどうなるか考えてみよう。そのような基底をとする。すると、先ほどと同じように変換前後のベクトルは以下のように表される。
基底の取り替えにおいて重要な考え方は、元の基底に対する表現行列をできる限り活かすことである。そのために、ではなく入力として与えるベクトルの方を変換することを考える。これを実現するためには、以下のような行列を利用する。
このような行列を基底の取り替え行列と呼ぶ。これより、は以下のように表現できる。
異世界を旅して帰還する
基底の変換後の式の両辺にをかけると以下のようになる。
が基底を用いた場合のの表現行列となる。
普通はここで話はおしまいである。基底を変換した後の表現行列が求められたのだから、めでたしめでたしというわけだ。しかし、という形の変換は線形代数に限らずいろんな数学の分野でよく見かける形であり、もう一段抽象的なレベルでの意味がある。これを少し掘り下げて考えてみよう。
まず、行列は基底の世界で表現されるベクトルに対して適用可能な行列である。これを別の世界のベクトル、すなわち、基底で表現されるベクトルに適用したいと思ったら、一度の世界からの世界に移動する必要がある。すると、移動後のベクトルにはを適用することができる。最後に、を適用して得られたベクトルを元の世界に戻してやれば、結局の世界のベクトルにを適用出来たことになる。以下に図を示す。
このようにで変換を挟み込むことは、その変換が適用可能な世界へと移動し、変換が終わったら元の世界に戻してやるような効果がある。これが線形変換の表現行列を別の基底で表したベクトルに適用できるからくりである。
対角化は座標変換
ここまで座標変換の話ばかりしてきた訳だが、座標変換と対角化の関係について述べておく。ずばり対角化とは、線形変換の基底を固有ベクトルから成る基底に変換する操作のことである。そして、対角化可能であるとは、基底となるような固有ベクトルの組が存在することを意味している。
逆に、もし固有値の重複度より固有ベクトルの次元が小さいものが存在すると、対象となる線形空間の次元に対して固有ベクトルの本数が足りなくなってしまい、基底を作れなくなる。この場合は対角化不可能となる。
基底の取り替え行列としては、のn個の列固有ベクトルを並べた行列を取れば対角化できる。計算の過程を以下に示す。
固有値・固有ベクトルは何に紐づくものか?
ここで注意点を1つ。世の中ではよく「行列の固有値」とか「行列の固有ベクトル」という言い方をする。これは別に間違っていない。実は、線形変換に対しても固有値・固有ベクトルという概念が存在する。
まず固有値についてだが、行列の固有値はのサンドイッチ変換に対して不変となる。そのため、線形変換の固有値とは「任意の基底に対する表現行列の固有値である」と定義しておけば、それは一意に定まる。
多様体や微分幾何学なんかが代表的であるが、座標系に依存しない量や概念というのは、その数学的対象の本質的な性質を表していると考えられるため、一般にとても重要である。
一方、固有ベクトルは座標系の取り方によって変わる。このように、固有値と固有ベクトルでは不変となる範囲が異なるので注意が必要である。
固有値・固有空間に着目した線形変換の分類
ここまでで固有値・固有ベクトルとかなりお友達になれたはずなので、本題に入ろう。線形変換が固有値の数や重複度、また固有空間の次元とどのような関係にあるのかを調べてみよう。簡単のために、話を上2次の正方行列に絞る。
上2次の正方行列は以下のように分類できる。
以下では分類された各項目の線形変換がどのような振る舞いをするのか、例を用いながら調べてみる。
異なる2つの実固有値を持つ場合
例として以下の行列を考える。
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) # 重複度
この線形変換を可視化したものを以下に示す。
ここで、黒の矢印は基底、グレーの点線矢印は基底にを作用させて得られるベクトルである。赤の矢印は固有ベクトル、オレンジの点線矢印は固有ベクトルにを作用させて得られるベクトルである。また、水色の矢印は、矢印の根元の位置ベクトルが、によって矢印の先端に写ることを意味している。
これを見ると、Aの作用によって空間が2つの固有ベクトルの方向に伸び縮みしているのが分かる。これより、このタイプの線形変換は固有ベクトル方向の拡大・縮小を表すと考えられる。ただし、伸びるのか縮むのか、またその程度がどれくらいであるかは固有値によって決まる。
1つの実固有値を持ち、固有空間の次元が2の場合
例として以下の行列を考える。
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) # 重複度
この線形変換を可視化したものを以下に示す。
これを見ると、Aの作用によって空間が原点を中心に拡大されているのが分かる。これより、このタイプの線形変換は拡大・縮小を行うものと考えられる。
一点補足だが、このケースの線形変換の表現行列は単位行列の定数倍しかあり得ない。のただ1つの固有値をとすると、を対角化した行列はとなる。対角化のための変換行列をとすると、結局以下のようになる。
1つの実固有値を持ち、固有空間の次元が1の場合
例として以下の行列を考える。
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) # 重複度
この線形変換を可視化したものを以下に示す。
これを見ると、原点を通る固有ベクトルによって引かれる直線より下側では右向きの、上側では左向きの流れがあるように見える。これより、このタイプの線形変換は固有ベクトルと平行な方向に歪みを与える働きがあると考えられる。
実固有値を持たない場合
例として以下の行列を考える。
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)
この線形変換を可視化したものを以下に示す。
これを見ると、螺旋のような渦巻きが現れている。これより、このタイプの線形変換は回転と拡大・縮小の組み合わせになっていると考えられる。