対角化

このために、固有ベクトルが必要だった。

[前の記事へ]  [物理数学の目次へ]  [次の記事へ]


動機

 前回、固有値と固有ベクトルを紹介した理由をこれから明かそう。その素晴らしい利用法についてだ。

 ベクトル\( \Vec{s} \)が行列\( A \)により変換されて\( \Vec{t} \)となるという関係になっているとする。

\[ \begin{align*} \Vec{t} \ =\ A \, \Vec{s} \tag{1} \end{align*} \]
 式が出てきたからといって身構える必要なんてない。これはなんでもない普通の一次変換だ。この両辺に何らかの行列\( P \)をかけても当然の如く等式が成り立っているだろう。
\[ \begin{align*} P \, \Vec{t} \ =\ P A \, \Vec{s} \end{align*} \]
 しかしこれでは左辺にある\( \Vec{t} \)の方にだけ\( P \)がかかっていて不公平だから、\( \Vec{s} \)の方にも同じ変換を施しておきたい。何を言ってるのか分からないって?次の式を見れば何となく分かる。その為には次のように工夫すればいいのである。
\[ \begin{align*} P \, \Vec{t} \ =\ (P A P\sup{-1}) \, (P \, \Vec{s}) \tag{2} \end{align*} \]
 これで\( P \, \Vec{t} \)\( P \, \Vec{s} \)という似た形の二つのベクトルが式の中にできた。ここで新しく、
\[ \begin{align*} \Vec{s}' \ &=\ P\,\Vec{s} \\ \Vec{t}' \ &=\ P\,\Vec{t} \tag{3} \\ A' \ &=\ P A P\sup{-1} \end{align*} \]
と表すことにすれば、(2) 式は
\[ \begin{align*} \Vec{t}' \ =\ A' \, \Vec{s}' \end{align*} \]
という形になり、これは最初に書いた (1) 式と同じような変換の関係が成り立ったままだと言える。もしここで\( A' \)で表された行列の具体的な中身がうまい具合に最初の\( A \)よりシンプルな形になることがあったとしたら (1) 式より扱いが簡単になって便利である。すなわち\( P A P\sup{-1} \)という計算をした結果がシンプルなほど嬉しいわけだ。例えば対角行列、あるいはそれに近い形にできるとしたらどうだろうか。そうなるような\( P \)をどう決めたら良いのか、という話をこれからしていきたい。

 なぜこんなことを考えなくちゃいけないのか、という動機付けがまだ少し足りない気がする。応用はそれこそ沢山あるのだ。しかしそれを挙げ始めたら話が線形代数から離れて行ってしまうし・・・。

 とにかく、こういうことだ。線形変換で結ばれた二つのベクトル\( \Vec{s} \)\( \Vec{t} \)の関係を論じたくてもそのままでは複雑でどうも良く分からないというときに、一旦、\( \Vec{s}' \)\( \Vec{t}' \)に変換して別の視点から眺めるということをするとすっきり解決する場合があるのである。そのために前回紹介した固有ベクトルの性質を利用する。


教科書の表記に合わせる

 ところで一般の教科書では (2) 式のようではなく、次の形で書かれているはずだ。
\[ \begin{align*} P\sup{-1} \, \Vec{t} \ =\ (P\sup{-1} A P) \, (P\sup{-1} \, \Vec{s}) \tag{4} \end{align*} \]
 少しややこしく見えるかも知れないが、(2) 式と大した違いはない。ほら、\( P \)\( P\sup{-1} \)が入れ替わっているだけではないか。まぁ\( P \)の逆行列が\( P\sup{-1} \)であるなら、\( P\sup{-1} \)の逆行列は\( P \)であるので、(2) 式だろうが (4) 式だろうがどちらの形で書いても意味的には全く同じことではある。しかし実のところ (4) 式のように書いておく方が今後のためには都合がいいのである。

 なぜなら我々がこれからの作業で最初に導き出してやることになるのは (4) 式の意味での\( P \)であるからだ。図形的な意味をイメージするときにもこの方が分かりやすい。定義についても (3) 式を書き直したものをちゃんと書いておくことにしよう。

\[ \begin{align*} \Vec{s}' \ &=\ P\sup{-1} \, \Vec{s} \\ \Vec{t}' \ &=\ P\sup{-1} \, \Vec{t} \tag{5} \\ A' \ &=\ P\sup{-1} A P \end{align*} \]
 こちらが本物だ。さあ、新たなベクトル\( \Vec{s}' \)\( \Vec{t}' \)をどのように作ったらうまくいくのだろうか。


対角化

 前回説明した固有ベクトルが大活躍するのはここからだ。固有ベクトルというのは変換の前後で長さしか変らないのだった。

 そこでだ。例として最もイメージしやすい 2 次元で考えてみよう。

 2 次の変換行列を\( A \)とする。そしてその\( A \)には二つの方向の固有ベクトルがあるとする。固有ベクトルは長さは気にしなくてもいいのだった。適当な長さの固有ベクトルを選んで\( \Vec{u}\sub{1} \)\( \Vec{u}\sub{2} \)とでも表すことにしよう。それらの固有値はそれぞれ\( \lambda\sub{1} \)\( \lambda\sub{2} \)である。

 次に、平面の上に\( \Vec{u}\sub{1} \)\( \Vec{u}\sub{2} \)とを軸とする斜交座標の線を落書きしてやる。この線は今のところは平面の上に描かれたただの絵のようなものだと思ってほしい。平面の上に描かれたこの絵を行列\( A \)を使って変換してやると、どんな形の線に変わるだろうか?

 固有ベクトルというのは変換の前後で方向が変わらないのだから、軸の方向は変わらないことになるだろう。目盛りのスケールがそれぞれ\( \lambda\sub{1} \)倍と\( \lambda\sub{2} \)倍に変わるだけだ。つまり、座標の目盛りの幅が変わるだけであって、変換の後でも相変わらず同じような傾きの線が引かれているわけだ。

 以上のことからどんなことが言えるだろうか?

 この平面上のどんなベクトルであっても、予めこの斜交座標に従って位置を\( (a, b) \)のように記録しておけば、変換後のベクトルは、「変換する前の斜交座標」でいうところの\( ( \lambda\sub{1} a\ ,\ \lambda\sub{2} b ) \)で表される位置に移動すると表現できるようになるわけだ。単純な計算で済む。

 表現を変えた方が分かりやすいだろうか?この斜交座標を常用して数字だけで見ている人にとっては、あらゆるベクトルは変換\( A \)によって、\( \Vec{u}\sub{1} \)の方向に\( \lambda\sub{1} \)倍だけ、\( \Vec{u}\sub{2} \)の方向に\( \lambda\sub{2} \)倍だけ、引き伸ばされたに過ぎないと感じるわけである。この斜交座標を使っている人にとっては、変換\( A \)というのは、

\[ \begin{align*} A' \ =\ \left( \begin{array}{cc} \lambda\sub{1} & 0 \\[4pt] 0 & \lambda\sub{2} \end{array} \right) \end{align*} \]
のようなものである。今、この対角行列を\( A' \)と表現したのには意味がある。これが (5) 式に出てくる\( A' \)と同じ意味になるように話を重ねようとしているのである。

 ここで二つ前の記事「基底ベクトルの変換」の内容を思い出してもらいたい。平面上のある点の位置を二通りのやり方で表したとき、それらの数値がどんな関係で表されるか、という話があったはずだ。今考えたいのは、\( \Vec{e}_x = (1,0) \)\( \Vec{e}_y = (0,1) \)を基底とする直交座標で表されたもの\( \Vec{s} \)と、二つの固有ベクトルを基底とする斜交座標で表されたもの\( \Vec{s}' \)との関係である。それは次のような関係になっていると言えるのであった。

\[ \begin{align*} \Vec{s}' \ =\ P\sup{-1} \Vec{s} \end{align*} \]
 ここで使っている行列\( P \)というのは、新しい基底を縦ベクトルとして並べて入れて作ったものであるから、今回は二つの固有ベクトルを使ってやればいい。
\[ \begin{align*} P \ =\ ( \Vec{u}\sub{1} \ \ \Vec{u}\sub{2} ) \end{align*} \]
 これでは分かりにくいかも知れないのでもう少し具体的に書いてみようか。\( \Vec{u}\sub{1} \)\( \Vec{u}\sub{2} \)の成分を次のように表してみよう。
\[ \begin{align*} \Vec{u}\sub{1} \ &=\ (x\sub{1}\ ,\ y\sub{1}) \\ \Vec{u}\sub{2} \ &=\ (x\sub{2}\ ,\ y\sub{2}) \end{align*} \]
 これを使って表せば、行列\( P \)は次のようにして作られるということである。
\[ \begin{align*} P = \left( \begin{array}{cc} x\sub{1} & x\sub{2} \\[4pt] y\sub{1} & y\sub{2} \end{array} \right) \end{align*} \]
 今回の話はこれで終わりである。こうして作った\( P \)を使えば、\( A' = P\sup{-1}AP \)を計算したときに対角行列になって、その成分は固有値が並んだものになりますよ、ということである。これを「対角化」と呼ぶ。

 行列の次数と同じ数の独立な固有ベクトルがない場合にはこのような技は使えないわけで、うまく対角化できる場合には「行列\( A \)対角化可能である」のように表現する。


ジョルダン標準形

 線形代数の教科書には必ず「ジョルダンの標準形」という項目が存在しているのだが、物理でこの知識を使うことはほとんどない。しかし知っておくに越したことはないので豆知識ぐらいに説明しておこう。

 「ジョルダン標準形」とは、もし対角化がうまくできないような場合でも、うまくやればこの内のどれかの形にまでは必ず持って行くことができるでしょう、というカタログのことである。例えば、2 次の行列のジョルダンの標準形は次の 3 パターンである。

\[ \begin{align*} \left( \begin{array}{cc} \lambda\sub{1} & 0 \\[4pt] 0 & \lambda\sub{2} \end{array} \right) \ \ \ \ \ \ \ \left( \begin{array}{cc} \lambda\sub{1} & 0 \\[4pt] 0 & \lambda\sub{1} \end{array} \right) \ \ \ \ \ \ \ \left( \begin{array}{cc} \lambda\sub{1} & 1 \\[4pt] 0 & \lambda\sub{1} \end{array} \right) \end{align*} \]
 最初のものは異なる 2 つの固有値が求められ、不都合なく対角化ができた状態。次のものは固有値が重解になっていて 1 つだけしか導かれてこなかったが、勝手に選んだ線形独立な二つのベクトルを使用することで対角化ができた状態。そして最後のものは対角化がうまく行かなかった場合だ。固有値が重解として 1 つだけしか導かれず、しかも線形独立な 2 つのベクトルを選ぶことさえできない時にはこうなる。それでも、右上の成分が 1 になるという代償があるだけで、何とか対角行列に近い形に持っていくことに成功している。

 3 次の行列のジョルダンの標準形はもっとパターンが増える。分かりやすいように色分けしてみよう。

\[ \begin{align*} \left( \begin{array}{ccc} {\color{red}{\lambda\sub{1}}} & 0 & 0 \\[4pt] 0 & {\color{blue}{\lambda\sub{2}}} & 0 \\[4pt] 0 & 0 & {\color{green}{\lambda\sub{3}}} \end{array} \right) \ \ \ \ \ \ \ \left( \begin{array}{ccc} {\color{red}{\lambda\sub{1}}} & 0 & 0 \\[4pt] 0 & {\color{red}{\lambda\sub{1}}} & 0 \\[4pt] 0 & 0 & {\color{blue}{\lambda\sub{2}}} \end{array} \right) \ \ \ \ \ \ \ \left( \begin{array}{ccc} {\color{red}{\lambda\sub{1}}} & 0 & 0 \\[4pt] 0 & {\color{red}{\lambda\sub{1}}} & 0 \\[4pt] 0 & 0 & {\color{red}{\lambda\sub{1}}} \end{array} \right) \\[12pt] \left( \begin{array}{ccc} {\color{red}{\lambda\sub{1}}} & {\color{red}1} & 0 \\[4pt] 0 & {\color{red}{\lambda\sub{1}}} & 0 \\[4pt] 0 & 0 & {\color{blue}{\lambda\sub{2}}} \end{array} \right) \ \ \ \ \ \ \ \left( \begin{array}{ccc} {\color{red}{\lambda\sub{1}}} & {\color{red}1} & 0 \\[4pt] 0 & {\color{red}{\lambda\sub{1}}} & 0 \\[4pt] 0 & 0 & {\color{red}{\lambda\sub{1}}} \end{array} \right) \ \ \ \ \ \ \ \left( \begin{array}{ccc} {\color{red}{\lambda\sub{1}}} & {\color{red}1} & 0 \\[4pt] 0 & {\color{red}{\lambda\sub{1}}} & {\color{red}1} \\[4pt] 0 & 0 & {\color{red}{\lambda\sub{1}}} \end{array} \right) \end{align*} \]
 上段は全て対角化がうまく行った場合を表している。左上が 3 つの異なる固有値が求められた場合。その右隣にあるのが、固有値を求める方程式が二重解を持っていた場合。ここでは\( \lambda\sub{1} \)\( \lambda\sub{1} \)\( \lambda\sub{2} \)の順に並んでいるが、\( \lambda\sub{1} \)\( \lambda\sub{2} \)\( \lambda\sub{1} \)の順に並んでいるパターンだってあり得るだろう。しかしそういうのはほぼ同類とみなして省略している。右上が、三重解のために固有値がどれも同じ場合。これらが対角化に成功しているのは、いずれの場合でも独立な 3 つの固有ベクトルが選べたからである。

 下段はどれも対角化がうまく行かなかったパターンだ。左下が二重解の場合。二重解となった方の固有値に属する固有ベクトルとして独立な二つを期待していたが一つしか出てこなかったのだろう。その右隣が、三重解で独立な固有ベクトルが二つしか作れなかったために対角化できなかった場合。そして右下が、三重解で独立な固有ベクトルが一つきりしか作れなかった場合だ。

 では、対角化がうまく行かなかった場合、どのような手続きをすれば、\( P\sup{-1} A P \)がこのような標準形になるように\( P \)を定めることが出来るのだろうか。

 手続きは簡単だ。我々は固有ベクトルを求めるときに、次の条件に合うようなものを探したのだった。

\[ \begin{align*} (A-\lambda E) \Vec{u} \ =\ 0 \tag{6} \end{align*} \]
 今問題が起きているのはなぜかと言えば、この\( \lambda \)が重解であり、なおかつこの条件に合う\( \Vec{u} \)としては一つの方向の分しか導かれてこなかったからだ。そのときの\( \Vec{u} \)\( \Vec{u}\sub{1} \)と書くことにしよう。\( \Vec{u}\sub{1} \)は (6) 式を満たしている。さて、我々はこの他に「もう一つの固有ベクトル」を期待したのだが得られなかったのだった。そこで、固有ベクトルではないけれども、その代わりになる何らかのベクトル\( \Vec{u}\sub{2} \)が欲しいのである。そのためには次の条件を満たすものを探せばいい。
\[ \begin{align*} (A-\lambda E) \Vec{u}\sub{2} \ =\ \Vec{u}\sub{1} \tag{7} \end{align*} \]
 具体的には連立方程式を解く作業でしかないので難しくはない。こうして導かれた二つのベクトル\( \Vec{u}\sub{1} \)\( \Vec{u}\sub{2} \)を縦ベクトルとして並べたものを\( P \)として\( P\sup{-1}AP \)を計算すれば、ジョルダンの標準形の一つである次の形のものが出来上がるのである。
\[ \begin{align*} \left( \begin{array}{cc} \lambda & 1 \\[4pt] 0 & \lambda \end{array} \right) \end{align*} \]
 一体どんなからくりでそんなことになるのだろう?安心して欲しい。実に簡単な話であって、説明はすぐに終わる。(6) 式を移項すると、次のような意味である。
\[ \begin{align*} A \Vec{u}\sub{1} \ =\ \lambda \Vec{u}\sub{1} \end{align*} \]
 また、(7) 式も移項すると次のような意味である。
\[ \begin{align*} A \Vec{u}\sub{2} \ =\ \lambda \Vec{u}\sub{2} \ +\ \Vec{u}\sub{1} \end{align*} \]
 行列をうまく使えばこの二つの式を一度に表すことが出来る。
\[ \begin{align*} A (\Vec{u}\sub{1} \ \Vec{u}\sub{2}) \ &=\ \lambda (\Vec{u}\sub{1} \ \Vec{u}\sub{2}) \ +\ (0 \ \Vec{u}\sub{1}) \\[4pt] &=\ (\Vec{u}\sub{1} \ \Vec{u}\sub{2}) \left( \begin{array}{cc} \lambda & 0 \\[4pt] 0 & \lambda \end{array} \right) \ +\ (\Vec{u}\sub{1} \ \Vec{u}\sub{2}) \left( \begin{array}{cc} 0 & 1 \\[4pt] 0 & 0 \end{array} \right) \\[4pt] &=\ (\Vec{u}\sub{1} \ \Vec{u}\sub{2}) \left( \begin{array}{cc} \lambda & 1 \\[4pt] 0 & \lambda \end{array} \right) \end{align*} \]
 これは\( A P = P J \)という形である。この両辺に左から\( P\sup{-1} \)をかけると\( P\sup{-1}A P = J \)であり、望んだ関係が満たされていることになるのである。

 3 次の行列を使った場合も同じようなものである。もし固有値が 3 重解となって、独立な固有ベクトルが一つしか得られなかった場合には、先ほどと同じ手続きの後でさらに

\[ \begin{align*} (A-\lambda E) \Vec{u}\sub{3} \ =\ \Vec{u}\sub{2} \end{align*} \]
を満たすような第 3 のベクトルを導いて並べればいい。確認は任せよう。


 え?対角化の利点がまだ良く分からないって?まぁ、そうだろうねぇ。これの応用はかなり広いんだが、やっぱり一つくらいは示しておいたほうがいいだろうか・・・。