行列計算における固有値分解の理論とアルゴリズム

定義

行列 $A \in \mathbb{C}^{m \times m}$ に対して、以下の関係を満たすスカラー $\lambda \in \mathbb{C}$ とゼロでないベクトル $x \in \mathbb{C}^m$ が存在するとき、$\lambda$ を固有値、 $x$ を固有ベクトルと呼びます。

$$Ax = \lambda x$$

すべての固有値を $\Lambda(A) = \{\lambda_i\}$、対応する固有ベクトルを列ベクトルとする行列を $X = [x_1 | x_2 | \dots | x_m]$ と置くと、$AX = X\Lambda$ と表記できます。また、特性多項式は $p_A(z) = \det(zI - A) = \prod_{i=1}^{m} (z - \lambda_i)$ と定義されます。

主な定理と性質

  • 代数的多重度と幾何的多重度: 代数的多重度は幾何的多重度以上です。両者が一致する場合、その行列は「非欠損(nondefective)」と呼ばれます。
  • 相似変換: 任意の正則行列 $P$ を用いた $B = P^{-1}AP$ は、$A$ と同一の特性多項式、固有値、および重みを持ちます。
  • Schur分解: 任意の正方行列 $A$ は、ユニタリ行列 $Q$ と上三角行列 $T$ を用いて $A = QTQ^*$ と分解できます。特に $A$ がエルミート行列であれば、$T$ は対角行列 $\Lambda$ となります。

Rayleigh商(Rayleigh Quotient)

ベクトル $v$ に対して、$r(v) = \frac{v^* Av}{v^* v}$ と定義される値をRayleigh商と呼びます。$v$ が固有ベクトルである場合、$r(v)$ は対応する固有値 $\lambda$ と一致し、その勾配 $\nabla r(v)$ はゼロベクトルとなります。これは数値計算において固有値の収束判定に利用されます。

代表的な反復解法

1. べき乗法 (Power Iteration)

行列の最大絶対値固有値とその固有ベクトルを求める手法です。

# 擬似コード
v = random_vector()
for k in range(max_iter):
    w = A @ v
    v = w / norm(w)
eigenvalue = v.conj().T @ A @ v

この手法は固有値の比 $|\lambda_2 / \lambda_1|$ が小さいほど収束が速くなります。

2. 逆反復法 (Inverse Iteration)

シフト量 $\mu$ を導入し、$(A - \mu I)^{-1}$ に対してべき乗法を適用することで、$\mu$ に最も近い固有値を求める手法です。

v = initial_unit_vector()
for k in range(max_iter):
    w = solve((A - mu * I), v)
    v = w / norm(w)

3. Rayleigh商反復法 (Rayleigh Quotient Iteration)

逆反復法の $\mu$ を反復ごとに更新する手法です。対称行列に対しては、固有値および固有ベクトルが三次収束するという非常に強力な性質を持ちます。

4. QR法

行列 $A$ に対して以下の操作を繰り返すことで、行列を上三角化し、対角成分に固有値を得る手法です。

A_curr = A
for k in range(max_iter):
    Q, R = qr_decompose(A_curr - shift * I)
    A_curr = R @ Q + shift * I

効率化のため、あらかじめ行列をヘッセンベルグ行列(次対角成分以外の下三角部分がゼロの行列)に変換してからQR法を適用するのが一般的です。これにより、各ステップの計算量を $O(n^3)$ から $O(n^2)$ に削減可能です。

同時反復法 (Simultaneous Iteration)

複数のベクトルを同時に反復させ、部分空間を捉える手法です。本質的にQR法と等価であり、行列の主要な $r$ 個の固有ベクトルを同時に収束させることができます。

タグ: 線形代数 固有値分解 数値解析 QR法 行列演算

7月9日 17:09 投稿