対角化、固有値分解、特異値分解、そしてジョルダン標準形

はじめに

行列の対角化という言葉がある。

高校や大学で数学を学んだ人なら、行列の対角化はすごい! という話を何度も耳にしたことがあると思う。
ただ、それと同時に、対角化はいつでもできるわけではないという話や、対角化を一般化する話、対角化の別名や似ている定理など、対角化に関する様々な話を聞いて、混乱してしまった方も多いのではないだろうか。

今日はそんな行列の対角化について、できるだけ直感的に(数学をあんまり知らない人にも伝わるように)説明できる範囲で、私の知っていることをまとめてみようと思う。


この記事では、以下の用語について説明・分類する。

1. 対角化
2. 固有値分解
3. 特異値分解
4. ジョルダン標準形

用語の分類

用語 数式 常に出来る 対角になる 相似性の保存
対角化  A=P D P^t NO YES YES
固有値分解  A=P D P^t NO YES YES
特異値分解  A=U D V^t YES YES NO
ジョルダン標準形  A=P J P^t 条件付きYES NO YES

行列の基本性質(行列を知らない人向け)

(この章は行列を知らない人向けの章なので、ご存知の方はまるまる飛ばしてもらって構わない。)

そもそも行列とはどういうものかというと、

 \displaystyle A=\begin{pmatrix} a & b & c \\ d & e & f \\ g & h & i \end{pmatrix}

のように、数字が縦横に並んだもののことを言う。これはただ数字を並べただけだが、行列には性質の良い演算を定めることができて、普通の数と同じように足し算や引き算、掛け算を考えることができる。
以降、 A Bなど大文字の記号が出てきたら、それは実は行列で、虫眼鏡で見てみるとたくさんの数字が並んでいるんだ、と思ってほしい。
中の数字がどんなものであるかは、あんまり触れないことにする。

行列積

そうは言っても、行列は数がたくさん並んでいるので、普通の数とはちょっと違うところがいくつかある。
まず言わなければならないのは、積(掛け算)が常に計算できるとは限らないことだ。

いま、Aa\times b行列、 B c \times d行列であるとする。 a\times b行列というのは、数字が縦に a個、横に b個並んでいるという意味だ。
このとき、 b=cであることと積 ABが計算可能であることは同値であり、その積は a\times d行列になる。

 2\times 3行列と 3 \times 5行列は 2\times 5行列になるということだ。内側の2つの数字が対消滅して、外側だけが残る。
行列の中身がどういう値になるかは、面倒なのでここでは議論しない。とにかく内側の数字が揃っていれば掛け算ができるし、揃っていなければ掛け算はできないということだけわかってほしい。

ちなみに、普通の数と違って、掛け算の順番を入れ替えてはいけないということもここでわかる。
 2\times 3行列と 3 \times 5行列の積は 2\times 5行列になるが、 3 \times 5行列と 2\times 3行列の積は計算できないからだ。
 2\times 2行列と 2 \times 2行列であれば、入れ替えても計算は通るが、値は同じになるとは限らない( AB\neq BAとなることがある)。このあたりは普通の数と違うところなので注意してほしい。

零行列と単位行列

行列積は掛け算みたいなものなので、数字でいうところの0や1を考えてみたくなる。
それぞれ、何を掛けても0になるもの、何を掛けても変化しないもの、という意味だ。
実際そういう行列はあって、これを零行列、単位行列と呼び、 O Iで表す。01っぽいでしょ(語源はたぶんoriginとidentityだけど)。

これは、どんな行列 Aについても、
 AO=OA=O AI=IA=A
が成り立つということだ。
頭の中では0や1に変換して読むと良い。

 O Iは、正方行列(正方形のように、縦横に並んでいる数が同じ行列)しか存在しないが、各サイズに一つずつ存在している。
 2\times 2零行列、 5\times 5単位行列 100\times 100零行列などがあるということだ。 1\times 1零行列、単位行列はそれぞれ0、1と等しい。

逆行列

実は、行列には割り算がない。
もちろん割り算の定義次第ではあるが、少なくとも積の逆演算、 AB=Cのときに B=C/A?などとすることはできない。
なので、もしこういうことができるときは、それを特別扱いして逆行列と呼ぶことにする。
行列 Aに対して、 AR=RA=Iとなるような Rのことだ。これを A逆行列と呼び、 A^{-1}で表そう。

そうすると、 AB=Cのときには、 AB=Cの両辺に左から A^{-1}を掛けて、 A^{-1}AB=A^{-1}Cとなり、左辺は A^{-1}AB=IB=Bだから、あたかも両辺を Aで割ったかのように計算することができた。

逆行列は、元の行列が正方行列でないと定義できない。かといって、元の行列が正方行列なら常に逆行列があるかというと、そういうわけでもない。
正方行列であるだけでなく、その他の厳しい試練をくぐり抜けた一握りの行列だけが、逆行列を持つことを許されるのである。

直交行列

行列のうち、いくつかのかっこいい行列を紹介しよう。

まずは直交行列。これは「転置行列が逆行列と等しい」ような正方行列のことを指す。
転置行列というのは、行列の左上と右下を手で掴んで、息を吹きかけて180度回転させた行列のことだ。実例がwikipediaに載っている。
直交行列は、転置すると逆行列になる。つまり、行列 Aの転置行列を A^tとすると、 A^t A=AA^t=Iが成り立つ。

なぜ「直交」行列なのかは全くわからないと思うが、これは行列の積をもっときちんと勉強した人ならすぐにわかる話だ。
 A^t A =Iなのだから、 A=(u_1 u_2 \cdots u_n)とすれば u_i u_j = \delta_{ij}となって、各 u_iが「直交」していることがわかる。
今は気にしなくて良い。とにかく直交行列はかっこいい行列なのだ。

ちなみに、複素数の範囲で考えた直交行列をユニタリ行列という。
転置の代わりに似たような別の操作をするだけなので、今は気にしないことにする。

対角行列

次に紹介するかっこいい行列は、対角行列だ。
対角行列はその名の通り、対角成分にだけ数字が並んでいる正方行列のことだ。
他の部分は別に虚無が広がっているわけではなく、単に0で埋められている。

 \displaystyle A= \begin{pmatrix} a & 0 & 0 \\ 0 & b & 0 \\ 0 & 0 & c \end{pmatrix}

これは3次の対角行列。

見ての通り、すごくすっきりしている。
こんな感じなので、めちゃくちゃいい性質がたくさんある。

ベクトル

縦か横のどちらかの長さが1であるような行列を、ここではベクトルと呼ぼう。

 \displaystyle v= \begin{pmatrix} a \\ b \\ c \end{pmatrix}

これは 3\times 1行列。またの名を3次元ベクトル。

 3\times 1行列なのだから、例えば 3\times 3行列に右から掛けることができて、その結果もまた 3\times 1行列、つまり3次元ベクトルになる。


役者は揃った。本題に入ろう。

対角化

まずは対角化について説明する。

行列 Aを対角化するとは、直交行列 Pを持ってきて、対角行列 Dについて、
 \displaystyle A=PDP^t
とすることを言う。

直交行列 Pは転置すると(右上に tを書くと) P逆行列になるのだから、(転置を2回すれば元に戻ることに注意して、)
 \displaystyle D=P^t A P
と書くことが出来る。
直交行列ではさみ揚げした結果対角行列になったので、これを「対角化」と呼ぶ。

このような操作はいつでもできるわけではなく、対角化できる行列は限られている。そのような行列は「対角化可能である」と言う。


対角化すると何が嬉しいのかについて、(たくさんあるが、その中でも代表的な)2通りの解釈がある。

1つは、対角化することで Aを単純なベクトルの組み合わせに変換できるということ。
行列の積について説明していないので詳しくは述べないが、 A=PDP^tという形に変換したことは、 A Pの各要素( Pに含まれる直交する縦ベクトルたち)の和で表したことに等しい。
 P=(u_1 u_2 \cdots u_n) D=diag(\lambda_1, \lambda_2, \cdots, \lambda_n)とすれば、 A=\lambda_1 u_1 u_1^t + \lambda_2 u_2 u_2^t + \cdots + \lambda_n u_n u_n^tとなるからである。)
こういう操作はとても嬉しい。一般の行列について議論をするのは大変だが、各々直交するベクトルの話に変換すれば、多くの場合において物事が単純になるからである。
あるいは、見方を変えれば、(これもアドバンストな内容になるが)直交行列は実は空間上の回転・反転を表しているので、この操作は回転させてその世界で物事を考えた後に回転を戻すという操作に等しい。回転した先の世界では対角行列なので(つまり、各方向だけが関与していて方向同士が相関を持っていないので)、とても扱いやすい形になっている。

もう1つは、対角化しても変わらない性質がたくさんあること。
実は直交行列は皆さんが思っている以上に振る舞いが良く、行列の様々な性質を全く変えることなく変換することができる。
なので、この直交行列ではさみ揚げする操作、 PAP^tを、行列 Aと同じ行列だと見てしまおうという学問がある。
行列 A Bについて、もしどこかに直交行列 Qがあって B=QAQ^tであることがわかったら、 A Bは「相似」であると見なすのである。
図形の相似で、三角形 ABCと三角形 DEFについて、もしどこかに大きさ lがあって三角形 ABC l倍した三角形が DEFと合同であれば、 ABC DEFが相似である、というのと同じである。
対角化は、相似な行列の中で最も簡単なものに変換する作業であると言える。なので、2つの行列が相似かどうかを確認したければ、両方を対角化してその対角化したものが等しいかどうかを見れば良い。相似かどうかを確認するために面積を1に揃えるのと同じだ。

これらを踏まえて、冒頭で紹介した4つの用語について説明しよう。

対角化、固有値分解、特異値分解

固有値分解は、対角化の性質のうち、前者に焦点を当てたものである。
固有値という言葉にはもしかすると聞き覚えがないかもしれないが、対角化したときに出てくる対角成分のことである(実際の定義は全然違って、もっと一般的だし、もっと面白い。行列の表す写像が拡大縮小以外行わないような基底となる方向を考えたときの、その方向に対応する拡大率である)。
細かい話は置いておいて、固有値分解は対角化と全く同じものを指しているということだ。

特異値分解は、これを一般の行列にも拡張したものだ。
行列 Aに対して、直交行列 U, V、対角行列 Dを用いて、 A=UDV^tと分解する、というのが特異値分解である。
対角化が「正方行列の」「一部の行列」にだけ使えたのに対し、特異値分解はあらゆる行列に対して行うことができる。そのかわり、分解する時に使う直交行列は U, Vの2個になってしまった。
対角化では P1つあればよかったが、対角化できなさそうな行列については、右側の直交行列と左側の直交行列を分けてしまうことで対処しよう、というアイデアだ。

メリットは、どんなものにも使えること。もちろん、対角化可能な行列に使うと対角化と等しくなる( U=Vとなる)。
デメリットは、もはや U= Vが常には成り立たないので、対角化の2つめの目的であった「相似」の性質は一切失われてしまうということ。
相似の性質を落とすことで、一般の行列にも使えるように拡張したのが特異値分解である。

対角化、ジョルダン標準形

ジョルダン標準形は、特異値分解とは逆に、2つめの目的を保ちながら対角化を一般の行列に拡張したものである。
 A=PJP^tと書く。 J Aジョルダン標準形と言って、対角行列の右上に毛が生えたような行列である。

ジョルダン標準形は、どんな正方行列にも行うことができる。
特異値分解と違って縦横の大きさが違う行列には使えないし、もはや真ん中の行列が対角行列ではなくなってしまったが、それでも挟む直交行列は1つのままだ。なので、「相似」の性質がそのまま残っている。
すなわち、どんな正方行列 A Bであっても、一度ジョルダン標準形にして等しいかどうかを確認すれば、 A Bが相似かどうかがすぐにわかるということだ。

メリットは、やはりどんな正方行列にも使えること。対角化可能な行列に使うと対角化と等しくなる( Jが対角行列になる)。
デメリットは、真ん中の行列が対角行列ではなくなってしまったので、対角化の1つめの目的であった「回転させて、各々独立な世界で物事を考える」という性質が失われていること。対角化不能な行列は、どう回転させても、各要素について独立な変換になるような空間が存在しないので、ジョルダン標準形はその部分を諦めている。


用語の分類(再掲)

というわけで、冒頭に貼った用語の分類表を再掲しよう。

用語 数式 常に出来る 対角になる 相似性の保存
対角化  A=P D P^t NO YES YES
固有値分解  A=P D P^t NO YES YES
特異値分解  A=U D V^t YES YES NO
ジョルダン標準形  A=P J P^t 条件付きYES NO YES

対角化・固有値分解は重要な2つの性質を持っており、それらのうち片方を捨ててもう片方を取ることで、対角化を一般の行列にも使えるようにしたのが特異値分解ジョルダン標準形である。



この記事が皆さんの理解の一助となれば幸いです。