有限体上の線形代数を探訪する ~ 固有値・固有ベクトル編 ~

前回の記事では有限体上の線形空間における直交補空間について考えた。本稿ではその続きとして固有値固有ベクトルについて考えてみる。

固有値固有ベクトル

固有値固有ベクトルの定義を本[1]より引用する。

 V K上の線型空間,  T Vの線型変換とする.  Tによって方向の変らないベクトル, すなわち,  T{\bf x} = \alpha {\bf x} (\alpha \in K)となるような Vの元 {\bf x} oでないものを,  T固有ベクトルと言う. このときの数 \alpha T固有値と言い,  {\bf x} T固有値 \alphaに対する固有ベクトルと言う.

本[1]で K実数体または複素数体のいずれかを表すということになっているが、この定義を体の視点から見るとベクトルのスカラー倍さえ定まっていれば意味を成す。したがって Kを有限体としてもこの固有値固有ベクトルの定義は妥当であると言える。

固有空間

もう一つ大切な概念として固有空間がある。これについても定義の妥当性を確認しておこう。以下に本[1]に記載されている定義を示す。

固有空間
 \alpha T固有値であるとき,  {\bf o}および \alphaに対する T固有ベクトル全部の集合 W_{\alpha}は,  V \{{\bf o}\}でない T-不変部分空間である. これを, 固有値 \alphaに対する Tの固有空間と言う.

この定義も特に実数体複素数体に固有の性質は利用していないため、有限体上の線形空間に対しても同様の定義を適用可能である。

固有空間の和

実数体複素数体上の線形空間の場合、固有空間の和は実際には直和になる。有限体の場合も果たしてそうなるのだろうか?これを確かめるために、まず複素数体の場合の証明の概要を本[1]から抜粋する。

示すべきは、線形変換 Tの相異なる固有値に対する固有ベクトルが線形独立になることである。相異なる固有値 \beta_1, \beta_2, \cdots, \beta_kに対する固有ベクトル {\bf x}_1, {\bf x}_2, \cdots, {\bf x}_kとする。このとき、 {\bf x}_1, {\bf x}_2, \cdots, {\bf x}_kが線形従属であると仮定すれば、 {\bf x}_1, {\bf x}_2, \cdots, {\bf x}_{i-1}は線型独立だが {\bf x}_1, {\bf x}_2, \cdots, {\bf x}_iは線形従属であるような i (2 \le i \le k)が存在する。このとき、 {\bf x}_i

 \displaystyle{
{\bf x}_i = c_1{\bf x}_1 + c_2{\bf x}_2 + \cdots + c_{i-1}{\bf x}_{i-1}
}   (1)

と表せる。この両辺に Tを適用すれば

 \displaystyle{
\beta_i {\bf x}_i = c_1 \beta_1{\bf x}_1 + c_2 \beta_2{\bf x}_2 + \cdots + c_{i-1} \beta_{i-1}{\bf x}_{i-1}
}   (2)

となる。式(1)の両辺に \beta_iを掛けて(2)から引くと以下のようになる。

 \displaystyle{
c_1 (\beta_1 - \beta_i){\bf x}_1 + c_2 (\beta_2 - \beta_i){\bf x}_2 + \cdots + c_{i-1} (\beta_{i-1} - \beta_i){\bf x}_{i-1} = {\bf o}
}

 {\bf x}_1, {\bf x}_2, \cdots, {\bf x}_{i-1}は線形独立であり、かつ \beta_1, \beta_2, \cdots, \beta_kは相異なるので、 c_1 = c_2 = \cdots = c_{i-1} = 0である。これより {\bf x}_i = {\bf o}となるが、これは {\bf x}_i固有ベクトルであることに矛盾する。よって仮定は誤りで、相異なる固有値に対する固有ベクトルは線形独立である。これより、固有空間の和は直和であると言える。(証明終わり)

この証明の中では複素数固有の性質は特に使われていないため、有限体でも同じように成立すると考えられる。

対角化

固有値は対角化と密接な関連がある。対角化はいつでも可能なわけではないが、有限体上の線形空間でも対角化可能となる条件は変わらないだろうか?これについて調べてみる。

まず、線形写像の表現行列が対角化可能となる条件を本[1]より引用する。

対角化可能となる条件
 K上の線形空間 Vの線形変換 Tが, 適当な基底に関して対角行列で表現されるためには,
 \displaystyle{
V = W_1 \dotplus W_2 \dotplus \cdots \dotplus W_k
}
が成立つことが必要かつ充分な条件である. 言換えれば,  T固有ベクトルのみから成る Vの基底が存在することが条件である.

体力的に厳しいので、 Vが固有空間の直和であれば Tが対角行列で表現できることの証明だけ追ってみる。 {\bf e}_1, {\bf e}_2, \cdots, {\bf e}_nが全て T固有ベクトルであるとき、 {\bf e}_iに対応する固有値 \alpha_i (i = 1, 2, \cdots , n)とすれば T {\bf e}_i = \alpha_i {\bf e}となる。よって基底 {\bf e}_1, {\bf e}_2, \cdots, {\bf e}_nに関する Tの表現行列は

 \displaystyle{
\begin{pmatrix}
\alpha_1 & & & \\
& \alpha_2 & & \\
& & \ddots & \\
& & & \alpha_n \\
\end{pmatrix}
}

となる。(証明終わり)

この証明の中では特に実数体複素数体固有の議論は行っていないため、有限体でも同様に成り立つ。証明をさぼったが、逆についても同様である。

ここからさらに議論を積み重ねると、ある行列が対角化可能であるためには、各固有値について固有多項式の根としての多重度と対応する固有空間の次元が一致することが必要十分条件であることが言える。これについても証明を詳細に書き記す元気がなくなってきたので断念するが、本[1]を見る限りは有限体でも同様の条件が成立すると言えそうだ。

対角化できないケースの具体例

対角化ができる条件は分かったが、実数体複素数の場合、具体的にこの条件が満たされない状況には以下の2通りがある。

  • 固有値の多重度に対して固有空間の次元が小さいものが存在するとき。
  • 固有値多項式の根がベースとなる体に含まれないとき。

後者については体が代数閉体の場合は起こり得ないことに注意されたい。

これらのケースは有限体であっても存在する。各種具体例についてsageで計算してみた結果を以下に示す。

・計算プログラム

#!/usr/bin/env sage

from sage.all import *

def main():
    matrixList = []
    matrixList.append(matrix(GF(3), [[2, 1], [1, 2]]))
    matrixList.append(matrix(GF(3), [[2, 0], [0, 2]]))
    matrixList.append(matrix(GF(3), [[2, 1], [0, 2]]))
    matrixList.append(matrix(GF(2), [[1, 1], [1, 0]]))
    matrixList.append(matrix(GF(4), [[1, 0], [0, 1]]))
    for mat in matrixList:
        try:
            print(f"matrix:\n{mat}")
            print(f"eigen values: {mat.eigenvalues()}")
            print("eigen vectors(right):")
            for ev in mat.eigenvectors_right():
                print(ev)
            print("eigen spaces(right):")
            for es in mat.eigenspaces_right():
                print(es)
        except NotImplementedError:
            print("NotImplementedError occurred.")

        print("")

if __name__ == "__main__":
    main()

・実行結果

./gf-eigen.py
matrix:
[2 1]
[1 2]
eigen values: [0, 1]  ★多重度1の固有値が2つ
eigen vectors(right):  ★固有ベクトルが1つずつ
(0, [
(1, 1)
], 1)
(1, [
(1, 2)
], 1)
eigen spaces(right):
(0, Vector space of degree 2 and dimension 1 over Finite Field of size 3
User basis matrix:
[1 1])
(1, Vector space of degree 2 and dimension 1 over Finite Field of size 3
User basis matrix:
[1 2])

matrix:
[2 0]
[0 2]
eigen values: [2, 2]  ★多重度2の固有値が1つ
eigen vectors(right):  ★固有ベクトルが2つ
(2, [
(1, 0),
(0, 1)
], 2)
eigen spaces(right):
(2, Vector space of degree 2 and dimension 2 over Finite Field of size 3
User basis matrix:
[1 0]
[0 1])

matrix:
[2 1]
[0 2]
eigen values: [2, 2]  ★多重度2の固有値が1つ
eigen vectors(right):  ★固有ベクトルが1つ
(2, [
(1, 0)
], 2)
eigen spaces(right):
(2, Vector space of degree 2 and dimension 1 over Finite Field of size 3
User basis matrix:
[1 0])

matrix:
[1 1]
[1 0]
eigen values: [z2 + 1, z2]  ★2つの固有値がどちらもGF(2)の中に存在しない
eigen vectors(right):  ★このケースでの固有ベクトル計算はsageでは未サポート
NotImplementedError occurred.

matrix:
[1 0]
[0 1]
NotImplementedError occurred.  ★素数位数でない有限体について固有値計算はsageでは未サポート

やってみて分かったが、sageでは未サポートのケースがいくつかあるようだ。位数が素数でない有限体に対して固有値が計算できないのは、内部的に代数閉包を計算しており、かつそれが位数が素数でない有限体については対応していないからのようで、そのあたりのことは公式ドキュメント[3]に記載がある。

しかし、素数位数であっても固有値がベースとなる体の中に存在しないケースで固有ベクトルが計算できない理由は良く分からない。恐らく何か理論的な難しさがあるのだろう。

有限体の代数閉包

具体例を見ていく中で、いくつか私が疑問に思ったことがある。

  • 有限体は代数閉体になり得るか?
  • 代数閉体にならないとしたら、その代数閉包はどうなるのか?

1つ目の答えはNoである。証明は超簡単で(と言っても私は自力で思いつかなかったが)、有限体 \mathbb{F}_qが有限個の元 a_1, a_2, \cdots , a_qから成るとする。このとき、 (x - a_1)(x - a_2) \cdots (x - a_q) + 1の根は \mathbb{F}_qに含まれないので、有限体は代数閉体にはならない[2]。

では、有限体の代数閉包はどんな体になるのだろうか?軽く調べてみるといろいろ情報が出てくるが、これ単独で別の記事が書けそうな感じだったので、ここでは深入りしないでおく。これについてはまた機会があればブログに書きたいと思う。

対称行列の対角化

最後に対称行列に関して特筆すべき事項があるので、それについて紹介しよう。

実対称行列は適当な直交行列を用いて対角化可能であることが知られている。しかし、有限体の元を成分に持つ対称行列の場合は必ずしも対角化可能とは限らない[4]。

例えば、 \mathbb{F}_qの元を成分に持つ以下のような行列を考えてみよう。

 \displaystyle{
\begin{pmatrix}
0 & 1 \\
1 & 0 \\
\end{pmatrix}
}

この行列の固有値は1のみで、対応する固有ベクトル (1, 1)である。固有値の多重度が2で固有空間の次元が1のため、この行列は対角化できない。

なぜこうなるのかと言われると「成り立たないもんはしょうがない」ということになる(立派な反例があるので)。ただ、強いて言えば有限体の元を成分に持つ数ベクトルが成す空間では直交という概念が普通には定まらないので、そもそも直交行列の定義が怪しくなり、このような結果になっているのではないかと想像している。

まとめ

本稿では有限体上の線形空間における固有値固有ベクトルに関するあれこれについて考えてみた。やはり直交性に関わる部分ではおかしな挙動が見られるものの、概ね実数体複素数体上の線形空間と同様の性質を持つことが確認できた。

本当は今回の記事を最後にしてフィナーレを迎えるつもりだったが、双対空間について考えるのをすっかり忘れていたことに気づいた。というわけで、次回こそ真のフィナーレということで、有限体上の線形空間の双対空間について考えてみたいと思う。