はじめに
固有値・固有ベクトルを通して、豊かな数学の世界を知るシリーズです。
この記事と続くいくつかの記事では、複数の行列を同時に"対角化"するという考え方と、拡張された固有ベクトル/固有空間についての知見を通して、いくつかの興味深い数学的現象・考え方を紹介します。特に、プログラミングの世界では圏論というとCurry-Howard同型のことを指すことが多いですが、そうではない圏論の世界の入り口も紹介します(というと大げさですが)。
「使いみち」を実感するまでに、少し説明が長くなってしまいますが、ある程度の理解を経てようやく見える世界もあるということで、ご容赦ください。
以下特別に断らない限り、$a_{ij}$などの行列の中の数が取りうる範囲は複素数$\mathbb{C} = \lbrace a + bi \ | \ a, b $は実数$ \rbrace$とします。
この記事において重要なポイントを先にまとめておくと、以下のようになります。
- 行列を考える時にそれが作用するベクトル空間というものを考えるという方法論がある。(固有ベクトルも実はそう)
- 行列が作用するベクトル空間において、固有ベクトルのみからなる基底を取ることができれば、その行列は対角化できる。
- 複素数係数では、任意の行列に対して必ず固有値が存在する。
- 対角化することは、作用するベクトル空間を固有空間に分解することと同じだと解釈できる。
- 対角化できる場合、元のベクトル空間は固有空間の直和になっている。
- 対角化できない場合も、そのJordan標準形におけるJordan細胞の対応する空間への直和分解ができる。
対角化(固有値の計算の特別な場合)の意味
対角化の形式のおさらい
適当な$n\times n$行列$A$が、例えば以下のような形で与えられたとします。
$${A =
\left(
\begin{matrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn}
\end{matrix}
\right)
}$$
この行列を「対角化する」とき、適当な(正則)行列$T$を使って$T^{-1}AT$などとして、対角線上にのみ0でない成分がならぶ行列を作ります。すなわち、
$${T^{-1}AT =
\left(
\begin{matrix}
\lambda_1 & 0 & \cdots & 0 \\
0 & \lambda_2 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & \lambda_n
\end{matrix}
\right)
}$$
などとするわけです。この結果が"対角化"であることは一目瞭然ですね。
$T^{-1}$ってなんだっけ
でも、なぜ$T^{-1}$や$T$を左右から挟むようにした変換で対角化することに意味があるのでしょうか?(私ははじめてこの形を見た時に、不自然な形だなと思いました。)
その一つの答えは、この行列が$n$次元のベクトルに作用すると思ったときの、ベクトル空間の基底の交換なのでした。
ベクトル空間への行列の作用を考える
というのは、$A$という行列は、$n$次元のベクトル空間$V$に作用するものと考えることができます。具体的に、$V=\lbrace k_1e_1 + \cdots + k_ne_n \ \ | \ \ k_i \in \mathbb{C} \rbrace $などと適当な$e_1,\cdots,e_n$という"記号"を使って書けるとき、$v \in V$に対して
$$Av = \sum_{1 \leq i,j \leq n} a_{ij}k_je_i $$
とすることで、$v$への$A$の作用$Av$を定義できます。
これは、$e_i$という"記号"を省略して$$v = \left(
\begin{matrix}
k_1 \
k_2 \
\vdots \
k_n
\end{matrix}
\right) $$と表記することにすれば、まさしく行列の積で
$$Av = \left(
\begin{matrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{n1} & a_{n2} & \cdots & a_{nn}
\end{matrix}
\right) \left(
\begin{matrix}
k_1 \
k_2 \
\vdots \
k_n
\end{matrix}
\right)
= \left(
\begin{matrix}
\sum_j a_1jk_j \
\sum_j a_2jk_j \
\vdots \
\sum_j a_njk_j
\end{matrix}
\right) $$
となります。
"最適な表し方"のために、基底を取り直すことを考える
ここで$e_1, \cdots, e_n$は$V$の基底の一つですが、$V$の基底はこの一組ではありません。$V$における$A$の振る舞いを考えるとき、$e_1, \cdots, e_n$は最適な基底ではないかもしれません。これは数の表現とも似ていて、例えば我々は$5 + 7 = 12$などと計算をしますが、これは
○○○○○ + ○○○○○○○ = ○○○○○○○○○○ + ○○
という事にすぎず、この計算だけを取り上げるとあまりメリットがありません。
ただ、$2+6+3$と$5+7$をそのまま比べようとするとわかりにくいのが、$11$と$12$というように統一して表しておけばわかりやすい、という点においてはメリットがあります。
この考えを少し一般化して、ベクトル空間の基底の話に戻ると、同じ"実体"が違う表れ方をしているだけかもしれないと考えることができます。これを踏まえて、では$A$にとって都合のよい基底とは、一体どのようなものなのでしょうか?
固有ベクトルを基底にとると
そこで、タイトルにもある固有値と固有ベクトルが出てくるわけですね。
$A$が相異なる固有値を$n$個持っていて、それが$\lambda_1, \cdots, \lambda_n$であるとします。それぞれの係数に属する固有ベクトルを一つずつとって$t_1, \cdots, t_n$とするとき、$At_j = \lambda t_j$となります。
$$t_j = \left(
\begin{matrix}
t_{1j} \
t_{2j} \
\vdots \
t_{nj}
\end{matrix}
\right)$$
とかくと、$T = (t_{ij}) \ (1 \leq i,j \leq n)$について
$$AT = T \left(
\begin{matrix}
\lambda_1 & 0 & \cdots & 0 \
0 & \lambda_2 & \cdots & 0 \
\vdots & \vdots & \ddots & \vdots \
0 & 0 & \cdots & \lambda_n
\end{matrix}
\right)$$
となります。そこで、$T^{-1}$を両辺にかけて$T^{-1}AT$が対角化された行列になるのでした。
対角化できない場合
ここで、「$A$が相異なる固有値を$n$個持っていて」という仮定をしたのは重要で、実は常に厳密な対角化ができるとは限りません。実際に、対角化できない行列を示してみます。$$A=\left(
\begin{matrix}
0 & 1 \
0 & 0
\end{matrix}
\right)$$
これは、$Ae_1=0$、$Ae_2=e_1$という作用になります。$e_1$は固有値0に属する固有ベクトルと言えます。素直に固有ベクトルを計算しようとすると、
$$\left(
\begin{matrix}
0 & 1 \
0 & 0
\end{matrix}
\right)\left(
\begin{matrix}
x \
y
\end{matrix}
\right) = \left(
\begin{matrix}
\lambda x \
\lambda y
\end{matrix}
\right)$$
を満たす必要がありますが、左辺を計算すると
$$\left(
\begin{matrix}
y \
0
\end{matrix}
\right) = \left(
\begin{matrix}
\lambda x \
\lambda y
\end{matrix}
\right)$$
これの解は$\lambda \neq 0$と仮定すると$x=y=0$しかなく、$\lambda = 0$と仮定すると$y=0$を得るので、$e_1$の定数倍以外には固有ベクトルは存在しないことになります。
このような場合、対角化の一般化として「Jordan標準形」への変換というものがあり、実はこの行列も固有値が0のJordan標準形の一つなのですが、まずは固有値と固有ベクトルが必ず存在することから順を追って話を進めましょう。
固有値はいつでも存在するのか
ある0でないベクトル$v$があって、$\lambda \in \mathbb{C}$について$Av = \lambda v$をみたすとき、$\lambda$は$A$の固有値であり、$v$は$A$の固有ベクトルでした。
素朴な疑問として、固有値は常に存在するのか?という事があります。
例えば、
$$A=\left(
\begin{matrix}
0 & 1 \
-1 & 0
\end{matrix}
\right)$$
とすると、これは$v={}^t(1, i)$を取ると、$A{}^t(1, i) = {}^t(i, 1) = i(1, i)$となっていて、固有値の一つが$i$になります。実は、$-i$も固有値になっていて、
$$T=\left(
\begin{matrix}
1 & i \
i & 1
\end{matrix}
\right)$$を用いて
$$T^{-1}AT=\left(
\begin{matrix}
i & 0 \
0 & -i
\end{matrix}
\right)$$
などと対角化することができますが、じつはこの行列は実数の世界(各成分が実数のみ)においては対角化ができないのでした。実は、冒頭で各成分が複素数であることを仮定したことは、まさにこの現象と関連があります。
固有値を求めるにはいくつかの方法がありますが、$E$を単位行列として$\det(A-\lambda E) = 0$という行列式で書かれた$\lambda$についての$n$次方程式の解が固有値になっています。
簡単に説明をすると、$B=A-\lambda E$として$\det(B)=0$の場合、$B$の各成分を列ベクトルとして見ると一次独立ではなくなります。したがって、適当な0でない$v\in V$について$Bv = 0$が成り立ちます。つまり、$(A - \lambda E)v = 0$なので$Av = \lambda v$となります。したがって、上記の$n$次方程式が解を持てば、その解が固有値となるため、固有値と固有ベクトルの組が少なくとも1つは存在することがわかるのですが、数の範囲を複素数として考えると、複素数係数の1元$n$次方程式は必ず解を持つことが知られているので、固有値は必ず存在すると言えるのでした。
上三角行列への変形
固有値が必ず存在する、という事実を踏まえて対角化の類似を考えます。
一般に、行列$A$の固有値の一つを$\lambda_1$とすると、その固有ベクトルを含む基底を$t_1, \cdots, t_n$を用いて、以下のように書くことができます。
$${T^{-1}AT =
\left(
\begin{matrix}
\lambda_1 & * & \cdots & * \\
0 & * & \cdots & * \\
\vdots & \vdots & \ddots & \vdots \\
0 & * & \cdots & *
\end{matrix}
\right)
}$$
$*$としている箇所は何が入るかは不明ですが、少なくとも$\lambda_1$と$0$が左端に並ぶ、という事ですね。
ここで、$T^{-1}AT$の$V$への作用を、$t_2,\cdots,t_n$の作る部分空間、つまり「$\lambda$に対応する固有ベクトルを"除いた"部分空間」に制限して考えてみます。$t_2,\cdots,t_n$に$A$を作用させると、一般には$t_1$成分が出現しますが、これを無視するということです。
つまり、$\lambda_1$の行・列を除いた、$(n-1) \times (n-1)$行列が、$t_2,\cdots,t_n$の作る部分空間に作用していると思うわけです。そうすると、この作用については必ず一つ固有値が存在することになります。そこで、$t_2$をこの作用の固有ベクトルとすることで(つまり$T$も取り替えて)
$$T^{-1}AT =
\left(
\begin{matrix}
\lambda_1 & * & \cdots & * \
0 & \lambda_2 & \cdots & * \
\vdots & \vdots & \ddots & \vdots \
0 & 0 & \cdots & *
\end{matrix}
\right)
$$となるようにできます。この手順を繰り返せば、対角成分よりも下はすべて0になるように、行列を変形できます。対角化は無理でも、上三角化は可能ということですね。
この$*$をより"キレイ"な形になるように調整したものがJordan標準形なのでした。
Jordan標準形
なんと、上述の$*$を0または1にでき、しかも1は対角線の一つ上の成分にしか表れない、という行列に変換できることが分かっています。例えば、
$$T^{-1}AT =
\left(
\begin{matrix}
\lambda_1 & 1 & 0 & 0 \
0 & \lambda_1 & 0 & 0 \
0 & 0 & \lambda_2 & 1 \
0 & 0 & 0 & \lambda_2
\end{matrix}
\right)
$$
という行列はJordan標準形の一つです。一般に、
$$
\left(
\begin{matrix}
\lambda_i & 1 & \cdots & 0 \
0 & \lambda_i & \ddots & \vdots \
\vdots & \vdots & \ddots & 1 \
0 & 0 & 0 & \lambda_i
\end{matrix}
\right)
$$
という形の行列をJordan細胞と呼びますが、Jordan標準形にできるというのは、つまりJordan細胞が対角線上に並んだ形の「ブロック対角化」であれば、どんな行列でもその形に変形ができる、ということです。
Jordan標準形への変換は、具体的なアルゴリズムとして与えることができますが、ここでは説明は省略します。
ベクトル空間の直和への分解
さて、Jordan標準形において、各Jordan細胞を構成する基底を次のように書いてみます。
$t_{\lambda_1,1},t_{\lambda_1,2},\cdots,t_{\lambda_1,k_1},\cdots,t_{\lambda_i,1},t_{\lambda_i,2},\cdots,t_{\lambda_i,k_i}.$
つまり、固有値$\lambda_i$に対応する細胞ごとに基底の名前を書き換えました。
そうすると、実はベクトル空間$V$はこれらの各細胞に対応する基底の生成する空間の直和になっています:
$<t_{\lambda_1,1},t_{\lambda_1,2},\cdots,t_{\lambda_1,k_1}>\oplus \cdots \oplus <t_{\lambda_i,1},t_{\lambda_i,2},\cdots,t_{\lambda_i,k_i}>.$
Jordan標準形は、行列$A$の作用をわかりやすい形に直和分解した形式になっている、という解釈もできるわけです。
そこで、この行列の作用について、いくつか言葉を定義します。
- $V$への$A$の作用が「単純」であるとは、$A$の作用で閉じている部分空間$U \subset V$が$U=V$または$U=0$しかないときのことをいう。
- $V$への$A$の作用が「直既約」であるとは、$A$の作用で閉じている部分空間への直和分解$U\oplus W = V$が与えられたとき、$U=0,W=V$または$U=V,W=0$しかないときのことをいう。
- $V$への$A$の作用が「可約」であるとは、その作用が直既約でないことをいう。
固有値には必ず対応する固有ベクトルが最低一つは存在しますが、固有ベクトルの定数倍による部分空間は$A$の作用で閉じており、じつは単純な作用は常に1次元になります。
一方、任意のJordan細胞に対応する作用は直既約なので、直既約な作用はたくさんあります。ただ、直規約な作用をすべて列挙できれば、定義によってその直和としてすべての作用を表すことができます。
ということで、今回は一つの行列の作用についての考察をしましたが、次回以降は複数の行列を同時ブロック対角化することを考えます。
おまけ
$$ T^{-1}AT =
\left(
\begin{matrix}
\lambda & 1 & \cdots & 0 \
0 & \lambda & \ddots & \vdots \
\vdots & \vdots & \ddots & 1 \
0 & 0 & 0 & \lambda
\end{matrix}
\right)
$$
とするとき、$$ X = T^{-1}AT -\lambda E =
\left(
\begin{matrix}
0 & 1 & \cdots & 0 \
0 & 0& \ddots & \vdots \
\vdots & \vdots & \ddots & 1 \
0 & 0 & 0 & 0
\end{matrix}
\right)
$$
とおくと、$E$と$X$の生成する代数は$\mathbb{C}[X]/X^n$と同型になっています。一般に、$\mathbb{C}[X]$の基底として$1,X,X^2,...$を取ると、$X$の作用は
$$ X =
\left(
\begin{matrix}
0 & 1 & 0 & 0 & \cdots \
0 & 0 & 1 & 0 \
0 & 0 & 0 & 1 & \
\vdots & & & & \ddots\
\end{matrix}
\right)^t
$$
(転置)で与えられ、$\mathbb{C}[X]/X^n$はこれの商空間に対応しているのでした。