行列の対角化条件

次正方行列 が対角化可能であるとは、ある正則行列 が存在して

という形の対角行列 に変形できることを指します。この変形を対角化といい、 の列ベクトルは の固有ベクトルで構成されます。

対角化可能性は固有値と固有ベクトルの性質に依存し、すべての正方行列が対角化できるわけではありません。

対角化の必要十分条件

次正方行列 が対角化可能であるための条件は、次のいずれかと同値です。

個の線形独立な固有ベクトルをもつ
各固有値 について、固有空間の次元が の重複度と一致する
すべての固有値について、幾何的重複度と代数的重複度が一致する

最も基本的な条件は「 個の線形独立な固有ベクトルが存在すること」です。これらの固有ベクトルを並べた行列 が正則行列となり、対角化を実現します。

各固有値について、固有空間の次元が代数的重複度(固有方程式における根の重複度)と一致すれば、全体で 個の線形独立な固有ベクトルが得られます。

固有値 に対して、 を満たすベクトル 全体が作る空間。この次元を幾何的重複度という。

対角化可能となる十分条件

次の条件を満たす行列は必ず対角化可能です。

相異なる固有値が n 個

次正方行列が相異なる 個の固有値をもつ場合、それぞれの固有値に対応する固有ベクトルは自動的に線形独立になります。したがって必ず対角化可能です。

対称行列

実対称行列()は必ず対角化可能で、しかも直交行列 )を用いて対角化できます。これを直交対角化といいます。

エルミート行列

複素数を成分にもつエルミート行列()も必ず対角化可能で、ユニタリ行列によって対角化できます。

対称行列やエルミート行列は、幾何的重複度と代数的重複度が常に一致するため、固有値に重複があっても対角化可能です。

対角化できない例

すべての行列が対角化可能なわけではありません。

import numpy as np

# ジョルダン標準形をもつ行列(対角化不可)
A = np.array([
    [2, 1],
    [0, 2]
])

eigenvalues = np.linalg.eigvals(A)
print(eigenvalues)  # [2. 2.]

この行列は固有値 を重複度 2 でもちますが、固有空間の次元は 1 です。したがって線形独立な固有ベクトルが 2 個そろわず、対角化できません。

固有値 が重複度 2

固有空間の次元は 1 のみ

線形独立な固有ベクトルが不足

対角化不可能

このような行列はジョルダン標準形という別の標準形に変形されます。

対角化の判定手順

実際に行列が対角化可能かどうかを判定するには、次の手順を踏みます。

固有方程式 を解いて固有値を求める
各固有値の代数的重複度(固有方程式の根の重複度)を調べる
各固有値について を解き、固有空間の次元(幾何的重複度)を求める
すべての固有値で幾何的重複度 = 代数的重複度なら対角化可能

もし幾何的重複度が代数的重複度より小さい固有値が 1 つでもあれば、その行列は対角化できません。