行列 $\bm{A}$ にベクトル $\bm{x}$ を掛けると、一般にベクトルの大きさも方向も変わります。しかし、特別なベクトルに対しては、方向が変わらず大きさだけがスケーリングされることがあります。「この行列はこのベクトルを $\lambda$ 倍に引き伸ばす」— このような特別なベクトルが固有ベクトルであり、スケーリング係数 $\lambda$ が固有値です。
地震で建物が揺れるとき、建物には「揺れやすい方向」と「揺れにくい方向」があります。これらの特別な方向が固有ベクトルに対応し、各方向での揺れの大きさが固有値に対応します。ギターの弦を弾いたときに生じる倍音も、弦の振動を記述する微分方程式の固有値問題として理解できます。固有値と固有ベクトルは、「システムが自然に振る舞う方向とその強さ」を明らかにする道具なのです。
固有値と固有ベクトルは線形代数の中心概念であり、数学のほぼ全ての分野に登場します。
固有値分解を理解すると、以下のような応用が開けます。
- 機械学習: 主成分分析(PCA)は共分散行列の固有値分解に基づきます。データの分散が最大となる方向が最大固有値に対応する固有ベクトルです
- 物理学: 量子力学の観測量はエルミート行列の固有値として表されます。エネルギー準位や角運動量は固有値そのものです
- 制御工学: システムの安定性は状態行列の固有値で判定されます。全ての固有値の実部が負であればシステムは安定です
- 振動解析: 構造物の固有振動数は質量・剛性行列の一般化固有値問題として定式化されます
本記事の内容
- 固有値・固有ベクトルの直感的理解と定義
- 特性方程式による固有値の計算
- 対角化(固有値分解)の条件と計算
- 対称行列のスペクトル分解
- 固有値分解の応用(行列のべき乗、連立微分方程式)
- Pythonによる実装と可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
- 行列式の定義・計算方法・幾何学的意味 — 行列式の計算
- ベクトル空間と基底の概念 — 基底変換
固有値・固有ベクトルとは
直感的な理解
正方形のゴムシートを考えてください。このシートに力を加えて変形させると、一般にシート上の全ての点が動きます。しかし、ある特定の方向に注目すると、その方向のベクトルは向きを変えずに長さだけが変わることがあります。
行列による線形変換も同じです。2次元の行列 $\bm{A} = \begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix}$ を考えましょう。ベクトル $\bm{v}_1 = (1, 1)^T$ に $\bm{A}$ を掛けると $\bm{Av}_1 = (3, 3)^T = 3\bm{v}_1$ です。方向は変わらず、3倍になりました。一方、$\bm{v}_2 = (1, -1)^T$ に $\bm{A}$ を掛けると $\bm{Av}_2 = (1, -1)^T = 1 \cdot \bm{v}_2$ です。方向は変わらず、大きさもそのままです。
$\bm{v}_1$ と $\bm{v}_2$ がこの行列の固有ベクトル、3と1がそれぞれの固有値です。
数学的定義
$n \times n$ 正方行列 $\bm{A}$ に対して、$\bm{x} \neq \bm{0}$ かつ
$$ \begin{equation} \bm{A}\bm{x} = \lambda \bm{x} \end{equation} $$
を満たす $\lambda$ を固有値(eigenvalue)、$\bm{x}$ を $\lambda$ に対応する固有ベクトル(eigenvector)と呼びます。
$\bm{A}\bm{x} = \lambda\bm{x}$ を変形してみましょう。右辺を $\lambda\bm{I}\bm{x}$ と書き直すと($\bm{I}$ は単位行列)
$$ \bm{A}\bm{x} – \lambda\bm{I}\bm{x} = \bm{0} $$
左辺で $\bm{x}$ をくくり出すと
$$ (\bm{A} – \lambda\bm{I})\bm{x} = \bm{0} $$
これは同次連立方程式です。自明でない解 $\bm{x} \neq \bm{0}$ が存在するためには、係数行列 $\bm{A} – \lambda\bm{I}$ が正則であってはなりません(正則であれば唯一の解 $\bm{x} = \bm{0}$ しかない)。行列が正則でない条件は行列式がゼロであること、すなわち
$$ \begin{equation} \det(\bm{A} – \lambda\bm{I}) = 0 \end{equation} $$
これが特性方程式(characteristic equation)です。$n \times n$ 行列の特性方程式は $\lambda$ の $n$ 次多項式(特性多項式と呼びます)であり、代数学の基本定理により複素数の範囲で $n$ 個の根(重複を含む)を持ちます。
固有値の計算例
$\bm{A} = \begin{pmatrix} 4 & 1 \\ 2 & 3 \end{pmatrix}$ の固有値を求めます。
まず $\bm{A} – \lambda\bm{I}$ を計算します。
$$ \bm{A} – \lambda\bm{I} = \begin{pmatrix} 4 & 1 \\ 2 & 3 \end{pmatrix} – \lambda\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} = \begin{pmatrix} 4-\lambda & 1 \\ 2 & 3-\lambda \end{pmatrix} $$
$2 \times 2$ 行列の行列式は $ad – bc$ なので
$$ \det\begin{pmatrix} 4-\lambda & 1 \\ 2 & 3-\lambda \end{pmatrix} = (4-\lambda)(3-\lambda) – 1 \cdot 2 $$
$(4-\lambda)(3-\lambda)$ を展開すると $12 – 4\lambda – 3\lambda + \lambda^2 = \lambda^2 – 7\lambda + 12$ です。ここから2を引いて
$$ \lambda^2 – 7\lambda + 12 – 2 = \lambda^2 – 7\lambda + 10 = (\lambda – 5)(\lambda – 2) = 0 $$
固有値は $\lambda_1 = 5$, $\lambda_2 = 2$ です。
$\lambda_1 = 5$ の固有ベクトルを求めます。$(\bm{A} – 5\bm{I})\bm{x} = \bm{0}$ に代入すると
$$ \begin{pmatrix} 4-5 & 1 \\ 2 & 3-5 \end{pmatrix}\begin{pmatrix} x_1 \\ x_2 \end{pmatrix} = \begin{pmatrix} -1 & 1 \\ 2 & -2 \end{pmatrix}\begin{pmatrix} x_1 \\ x_2 \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \end{pmatrix} $$
第1行から $-x_1 + x_2 = 0$、すなわち $x_1 = x_2$ です(第2行は $2x_1 – 2x_2 = 0$ で同じ条件)。$x_1 = c$ とおくと $\bm{x}_1 = c\begin{pmatrix} 1 \\ 1 \end{pmatrix}$ です。
$\lambda_2 = 2$ の固有ベクトルを求めます。$(\bm{A} – 2\bm{I})\bm{x} = \bm{0}$ に代入すると
$$ \begin{pmatrix} 4-2 & 1 \\ 2 & 3-2 \end{pmatrix}\begin{pmatrix} x_1 \\ x_2 \end{pmatrix} = \begin{pmatrix} 2 & 1 \\ 2 & 1 \end{pmatrix}\begin{pmatrix} x_1 \\ x_2 \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \end{pmatrix} $$
$2x_1 + x_2 = 0$ より $x_2 = -2x_1$ です。$x_1 = c$ とおくと $\bm{x}_2 = c\begin{pmatrix} 1 \\ -2 \end{pmatrix}$ です。
検算: $\bm{A}\bm{x}_1 = \begin{pmatrix} 4 & 1 \\ 2 & 3 \end{pmatrix}\begin{pmatrix} 1 \\ 1 \end{pmatrix} = \begin{pmatrix} 5 \\ 5 \end{pmatrix} = 5\begin{pmatrix} 1 \\ 1 \end{pmatrix}$ で確かに固有値5倍になっています。
固有値と固有ベクトルの計算方法がわかったところで、次にこれらを使った行列の分解(対角化)を見てみましょう。
固有値分解(対角化)
対角化の定義
$n \times n$ 行列 $\bm{A}$ が $n$ 個の線形独立な固有ベクトル $\bm{v}_1, \ldots, \bm{v}_n$ を持つとき、行列 $\bm{P} = [\bm{v}_1 | \bm{v}_2 | \cdots | \bm{v}_n]$(固有ベクトルを列に並べた行列)を使って
$$ \begin{equation} \bm{A} = \bm{P}\bm{D}\bm{P}^{-1}, \quad \bm{D} = \begin{pmatrix} \lambda_1 & & \\ & \ddots & \\ & & \lambda_n \end{pmatrix} \end{equation} $$
と分解できます。これを固有値分解(eigendecomposition)または対角化(diagonalization)と呼びます。
なぜこの分解が成り立つのかを確認しましょう。$\bm{A}\bm{P}$ を列ごとに計算すると
$$ \bm{A}\bm{P} = \bm{A}[\bm{v}_1 | \bm{v}_2 | \cdots | \bm{v}_n] = [\bm{A}\bm{v}_1 | \bm{A}\bm{v}_2 | \cdots | \bm{A}\bm{v}_n] $$
各 $\bm{v}_i$ は固有ベクトルなので $\bm{A}\bm{v}_i = \lambda_i \bm{v}_i$ です。したがって
$$ \bm{A}\bm{P} = [\lambda_1\bm{v}_1 | \lambda_2\bm{v}_2 | \cdots | \lambda_n\bm{v}_n] = \bm{P}\bm{D} $$
$\bm{P}$ が正則(固有ベクトルが線形独立)なら $\bm{P}^{-1}$ が存在するので、両辺に右から $\bm{P}^{-1}$ を掛けて $\bm{A} = \bm{P}\bm{D}\bm{P}^{-1}$ が得られます。
対角化の直感的な意味は「座標変換」です。$\bm{P}^{-1}$ で固有ベクトル座標系に変換し、$\bm{D}$ で各軸方向に固有値倍のスケーリングを行い、$\bm{P}$ で元の座標系に戻す — これが $\bm{A} = \bm{P}\bm{D}\bm{P}^{-1}$ の幾何学的な意味です。
対角化可能の条件
全ての行列が対角化可能ではありません。対角化可能であるための十分条件は
- $n$ 個の異なる固有値を持つ → 対角化可能($n$ 個の線形独立な固有ベクトルが保証される)
- 実対称行列 → 必ず対角化可能(全ての固有値が実数で、固有ベクトルは直交する)
対角化不可能な例を見てみましょう。$\bm{A} = \begin{pmatrix} 1 & 1 \\ 0 & 1 \end{pmatrix}$ の特性方程式は $(1-\lambda)^2 = 0$ で、固有値は $\lambda = 1$(代数的重複度2)です。$(\bm{A} – \bm{I})\bm{x} = \begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix}\bm{x} = \bm{0}$ を解くと $x_2 = 0$ だけが条件なので、独立な固有ベクトルは $\begin{pmatrix} 1 \\ 0 \end{pmatrix}$ の1つだけです(幾何的重複度1)。代数的重複度と幾何的重複度が一致しないため、この行列は対角化不可能です。このような場合はジョルダン標準形を用いて対角に近い形に変換します。
対称行列のスペクトル分解
実対称行列 $\bm{A} = \bm{A}^T$ の場合、固有ベクトルを正規直交化できるため、$\bm{P}$ を直交行列 $\bm{Q}$($\bm{Q}^T\bm{Q} = \bm{I}$)に取れます。
$$ \begin{equation} \bm{A} = \bm{Q}\bm{D}\bm{Q}^T = \sum_{i=1}^{n} \lambda_i \bm{q}_i \bm{q}_i^T \end{equation} $$
これをスペクトル分解(spectral decomposition)と呼びます。$\bm{q}_i \bm{q}_i^T$ は $\bm{q}_i$ 方向への射影行列であり、行列 $\bm{A}$ が固有値で重み付けされた射影の和として表されることを意味します。
スペクトル分解の重要性は、対称行列の作用を直感的に理解できることにあります。任意のベクトル $\bm{x}$ に $\bm{A}$ を掛けると
$$ \bm{A}\bm{x} = \sum_{i=1}^{n} \lambda_i (\bm{q}_i^T \bm{x}) \bm{q}_i $$
となります。これは「$\bm{x}$ を各固有ベクトル方向に分解し、各成分を固有値倍して足し合わせる」操作です。主成分分析(PCA)では、共分散行列のスペクトル分解において、最大固有値に対応する固有ベクトル方向がデータの分散が最大となる方向(第1主成分)に相当します。
行列のべき乗
対角化の重要な応用は行列のべき乗の計算です。
$$ \bm{A}^k = (\bm{P}\bm{D}\bm{P}^{-1})^k = \bm{P}\bm{D}^k\bm{P}^{-1} $$
$\bm{D}^k$ は対角成分をそれぞれ $k$ 乗するだけなので
$$ \bm{D}^k = \begin{pmatrix} \lambda_1^k & & \\ & \ddots & \\ & & \lambda_n^k \end{pmatrix} $$
これにより、行列を $k$ 回掛ける計算が $O(n^3)$(1回の対角化)+ $O(n)$(べき乗の計算)で済みます。
具体例: 先ほど計算した $\bm{A} = \begin{pmatrix} 4 & 1 \\ 2 & 3 \end{pmatrix}$ のべき乗を考えます。$\bm{P} = \begin{pmatrix} 1 & 1 \\ 1 & -2 \end{pmatrix}$, $\bm{D} = \begin{pmatrix} 5 & 0 \\ 0 & 2 \end{pmatrix}$ なので
$$ \bm{A}^k = \bm{P}\begin{pmatrix} 5^k & 0 \\ 0 & 2^k \end{pmatrix}\bm{P}^{-1} $$
$k$ が大きくなると $5^k \gg 2^k$ なので、$\bm{A}^k$ は $\lambda_1 = 5$ に対応する固有ベクトル方向 $\bm{v}_1 = (1, 1)^T$ に支配されます。
もう一つの有名な例として、フィボナッチ数列 $F_{n+1} = F_n + F_{n-1}$ があります。これは行列のべき乗 $\begin{pmatrix} F_{n+1} \\ F_n \end{pmatrix} = \begin{pmatrix} 1 & 1 \\ 1 & 0 \end{pmatrix}^n \begin{pmatrix} 1 \\ 0 \end{pmatrix}$ で表されます。行列 $\begin{pmatrix} 1 & 1 \\ 1 & 0 \end{pmatrix}$ の固有値は $\phi = \frac{1+\sqrt{5}}{2} \approx 1.618$(黄金比)と $\psi = \frac{1-\sqrt{5}}{2} \approx -0.618$ です。対角化により、フィボナッチ数の一般項 $F_n = \frac{\phi^n – \psi^n}{\sqrt{5}}$ という閉じた公式(ビネの公式)が導出されます。
固有値の基本的な性質
固有値分解の応用を見る前に、固有値に関するいくつかの基本的な性質を整理しておきます。これらの性質は、計算の検算や結果の解釈に役立ちます。
トレースと固有値の和: 行列のトレース(対角成分の和)は固有値の和に等しいです。
$$ \text{tr}(\bm{A}) = \sum_{i=1}^{n} a_{ii} = \sum_{i=1}^{n} \lambda_i $$
先ほどの例では $\text{tr}(\bm{A}) = 4 + 3 = 7 = 5 + 2 = \lambda_1 + \lambda_2$ で確認できます。
行列式と固有値の積: 行列式は固有値の積に等しいです。
$$ \det(\bm{A}) = \prod_{i=1}^{n} \lambda_i $$
先ほどの例では $\det(\bm{A}) = 4 \times 3 – 1 \times 2 = 10 = 5 \times 2 = \lambda_1 \times \lambda_2$ で確認できます。
逆行列の固有値: $\bm{A}$ の固有値が $\lambda$ なら、$\bm{A}^{-1}$ の固有値は $1/\lambda$ です。$\bm{A}\bm{x} = \lambda\bm{x}$ の両辺に左から $\bm{A}^{-1}$ を掛けると $\bm{x} = \lambda\bm{A}^{-1}\bm{x}$、すなわち $\bm{A}^{-1}\bm{x} = \frac{1}{\lambda}\bm{x}$ が得られます。固有ベクトルは同じです。
転置行列の固有値: $\bm{A}$ と $\bm{A}^T$ は同じ固有値を持ちます。$\det(\bm{A}^T – \lambda\bm{I}) = \det((\bm{A} – \lambda\bm{I})^T) = \det(\bm{A} – \lambda\bm{I})$ なので特性方程式が同一です。ただし、固有ベクトルは一般に異なります。
これらの性質を利用すると、固有値を直接計算しなくても、トレースと行列式から $2 \times 2$ 行列の固有値を容易に推定できます。$\lambda_1 + \lambda_2 = \text{tr}(\bm{A})$, $\lambda_1 \lambda_2 = \det(\bm{A})$ なので、$\lambda$ は2次方程式 $\lambda^2 – \text{tr}(\bm{A})\lambda + \det(\bm{A}) = 0$ の解です。
理論を一通り学んだところで、Pythonで可視化してみましょう。
Pythonでの実装と可視化
固有値分解の幾何学的意味
import numpy as np
import matplotlib.pyplot as plt
A = np.array([[2, 1], [1, 2]])
eigenvalues, eigenvectors = np.linalg.eig(A)
print(f"固有値: {eigenvalues}")
print(f"固有ベクトル:\n{eigenvectors}")
fig, axes = plt.subplots(1, 3, figsize=(16, 5))
# (a) 単位円の変換
ax = axes[0]
theta = np.linspace(0, 2*np.pi, 200)
circle = np.array([np.cos(theta), np.sin(theta)])
ellipse = A @ circle
ax.plot(circle[0], circle[1], 'b-', linewidth=1.5, label='Unit circle')
ax.plot(ellipse[0], ellipse[1], 'r-', linewidth=2, label='$A$ applied')
# 固有ベクトル方向
for i, (lam, vec) in enumerate(zip(eigenvalues, eigenvectors.T)):
color = 'green' if i == 0 else 'purple'
ax.annotate('', xy=vec*lam, xytext=[0,0],
arrowprops=dict(arrowstyle='->', color=color, lw=2.5))
ax.annotate('', xy=vec, xytext=[0,0],
arrowprops=dict(arrowstyle='->', color=color, lw=1.5, linestyle='--'))
ax.text(vec[0]*lam*1.1, vec[1]*lam*1.1, f'$\\lambda_{i+1}={lam:.1f}$',
fontsize=11, color=color)
ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ax.set_title('Eigenvalue Decomposition: Geometric View', fontsize=12)
ax.set_aspect('equal')
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)
ax.set_xlim(-4, 4)
ax.set_ylim(-4, 4)
# (b) スペクトル分解
ax = axes[1]
# A = λ1 * v1 * v1^T + λ2 * v2 * v2^T
v1 = eigenvectors[:, 0:1]
v2 = eigenvectors[:, 1:2]
A_proj1 = eigenvalues[0] * v1 @ v1.T
A_proj2 = eigenvalues[1] * v2 @ v2.T
A_reconstructed = A_proj1 + A_proj2
matrices = [A, A_proj1, A_proj2, A_reconstructed]
titles_sub = ['$A$', f'$\\lambda_1 v_1 v_1^T$', f'$\\lambda_2 v_2 v_2^T$', 'Sum']
for i, (mat, title) in enumerate(zip(matrices, titles_sub)):
row, col = divmod(i, 2)
ax_pos = [0.05 + col*0.5, 0.55 - row*0.5, 0.4, 0.4]
# 簡略化: 行列の値を表示
text = f"$A = \\begin{{pmatrix}} {A[0,0]:.0f} & {A[0,1]:.0f} \\\\ {A[1,0]:.0f} & {A[1,1]:.0f} \\end{{pmatrix}}$\n\n"
text += f"$= {eigenvalues[0]:.0f} \\cdot v_1 v_1^T + {eigenvalues[1]:.0f} \\cdot v_2 v_2^T$\n\n"
text += f"Reconstruction error: {np.max(np.abs(A - A_reconstructed)):.2e}"
ax.text(0.5, 0.5, text, transform=ax.transAxes, fontsize=12,
ha='center', va='center')
ax.set_title('Spectral Decomposition', fontsize=12)
ax.axis('off')
# (c) 行列のべき乗
ax = axes[2]
k_values = np.arange(0, 8)
A_k_norm = []
for k in k_values:
Ak = np.linalg.matrix_power(A, k)
A_k_norm.append(np.linalg.norm(Ak, ord=2)) # スペクトルノルム = 最大固有値^k
ax.semilogy(k_values, A_k_norm, 'bo-', markersize=8, linewidth=2,
label='$\\|A^k\\|_2$')
ax.semilogy(k_values, eigenvalues[0]**k_values, 'r--', linewidth=1.5,
label=f'$\\lambda_{{max}}^k = {eigenvalues[0]:.0f}^k$')
ax.set_xlabel('k', fontsize=12)
ax.set_ylabel('Spectral norm', fontsize=12)
ax.set_title('Matrix Power $A^k$', fontsize=12)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3, which='both')
plt.tight_layout()
plt.savefig('eigenvalue_decomposition.png', dpi=150, bbox_inches='tight')
plt.show()
このグラフから、固有値分解の幾何学的な意味が視覚的に確認できます。
-
左図(単位円の変換): 青い単位円が行列 $\bm{A}$ によって赤い楕円に変換されています。固有ベクトル方向(緑と紫の矢印)では、ベクトルの方向が変わらず長さだけが固有値倍に伸びています。対称行列 $\bm{A} = \begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix}$ の場合、固有ベクトルは直交しており($(1,1)^T$ と $(1,-1)^T$)、楕円の長軸・短軸が固有ベクトル方向に一致します。長軸の長さが最大固有値 $\lambda_1 = 3$ に、短軸の長さが最小固有値 $\lambda_2 = 1$ に対応しています。楕円の扁平率は固有値の比 $\lambda_1 / \lambda_2 = 3$ で決まります。
-
中央図(スペクトル分解): 行列 $\bm{A}$ が2つのランク1行列($\lambda_1 \bm{v}_1\bm{v}_1^T$ と $\lambda_2 \bm{v}_2\bm{v}_2^T$)の和として分解されることを示しています。再構成誤差は機械精度のオーダー($10^{-16}$ 程度)であり、数値的にも分解が正確であることが確認できます。各ランク1行列 $\bm{v}_i\bm{v}_i^T$ はそれぞれ $\bm{v}_i$ 方向への射影行列であり、$\bm{A}$ による変換が「各固有方向への射影の固有値倍の合成」であることを表現しています。
-
右図(行列のべき乗): $\|\bm{A}^k\|_2$(スペクトルノルム)が最大固有値の $k$ 乗 $\lambda_{\max}^k$ と完全に一致しています(片対数グラフ上で直線になっている)。行列のべき乗の増大率は最大固有値で支配されることが明確に読み取れます。最大固有値が1より大きい場合はべき乗が発散し、1未満なら収束、ちょうど1なら一定に保たれます。この性質は、離散時間力学系の安定性解析の基盤です。
連立微分方程式への応用
固有値分解の重要な応用として、連立微分方程式(連立ODE)の解法があります。定数係数の連立1階ODEは
$$ \frac{d\bm{x}}{dt} = \bm{A}\bm{x}, \quad \bm{x}(0) = \bm{x}_0 $$
と行列形式で書けます。$\bm{A}$ を対角化して $\bm{A} = \bm{P}\bm{D}\bm{P}^{-1}$ と表し、変数変換 $\bm{y} = \bm{P}^{-1}\bm{x}$ を行うと
$$ \frac{d\bm{y}}{dt} = \bm{P}^{-1}\bm{A}\bm{P}\bm{y} = \bm{D}\bm{y} $$
$\bm{D}$ は対角行列なので、連立方程式が各成分に分離(デカップリング)されます。
$$ \frac{dy_i}{dt} = \lambda_i y_i \quad \Rightarrow \quad y_i(t) = y_i(0) e^{\lambda_i t} $$
元の変数に戻すと $\bm{x}(t) = \bm{P}\bm{y}(t)$ です。
具体例: $\bm{A} = \begin{pmatrix} -3 & 1 \\ 1 & -3 \end{pmatrix}$, $\bm{x}(0) = \begin{pmatrix} 2 \\ 0 \end{pmatrix}$ の場合を解きます。
特性方程式は $(-3-\lambda)^2 – 1 = \lambda^2 + 6\lambda + 8 = (\lambda + 2)(\lambda + 4) = 0$ で、固有値は $\lambda_1 = -2$, $\lambda_2 = -4$ です。固有ベクトルは $\bm{v}_1 = \frac{1}{\sqrt{2}}\begin{pmatrix} 1 \\ 1 \end{pmatrix}$, $\bm{v}_2 = \frac{1}{\sqrt{2}}\begin{pmatrix} 1 \\ -1 \end{pmatrix}$ です。
初期条件を固有ベクトル座標に変換すると $\bm{y}(0) = \bm{P}^{-1}\bm{x}(0)$ です。$\bm{P}$ は直交行列なので $\bm{P}^{-1} = \bm{P}^T$ であり、$y_1(0) = \bm{v}_1^T\bm{x}(0) = \frac{2}{\sqrt{2}} = \sqrt{2}$, $y_2(0) = \bm{v}_2^T\bm{x}(0) = \frac{2}{\sqrt{2}} = \sqrt{2}$ です。
したがって
$$ \bm{x}(t) = \sqrt{2} e^{-2t} \bm{v}_1 + \sqrt{2} e^{-4t} \bm{v}_2 = \begin{pmatrix} e^{-2t} + e^{-4t} \\ e^{-2t} – e^{-4t} \end{pmatrix} $$
両方の固有値が負なので、$\bm{x}(t) \to \bm{0}$ に収束します。制御工学では、この条件(全固有値の実部が負)が漸近安定性の条件です。遅く減衰する固有値 $\lambda_1 = -2$ が長時間後の挙動を支配し、時定数は $\tau = 1/|\lambda_1| = 0.5$ です。
まとめ
本記事では、固有値分解の理論と応用について解説しました。
- 固有値と固有ベクトルは $\bm{Ax} = \lambda\bm{x}$ を満たす $\lambda$ と $\bm{x}$ であり、行列の「本質的な方向とスケーリング」を表す
- 特性方程式 $\det(\bm{A} – \lambda\bm{I}) = 0$ で固有値を求め、$(\bm{A} – \lambda\bm{I})\bm{x} = \bm{0}$ で固有ベクトルを求める
- 固有値の性質: トレース = 固有値の和、行列式 = 固有値の積、逆行列の固有値 = 固有値の逆数
- 対角化 $\bm{A} = \bm{PDP}^{-1}$ は $n$ 個の線形独立な固有ベクトルがあるとき可能。幾何学的には「固有ベクトル座標系での各軸スケーリング」を意味する
- 実対称行列のスペクトル分解 $\bm{A} = \bm{QDQ}^T = \sum \lambda_i \bm{q}_i\bm{q}_i^T$ は射影行列の重み付き和
- 行列のべき乗 $\bm{A}^k = \bm{PD}^k\bm{P}^{-1}$ が効率的に計算できる。最大固有値がべき乗の増大率を支配する
- 連立微分方程式は対角化によりデカップリングされ、各成分が独立に解ける
次のステップとして、以下の記事も参考にしてください。
- 特異値分解(SVD)の導出と応用 — 対角化の一般化
- 行列式の定義・計算方法・幾何学的意味 — 特性方程式の基礎