# 固有値の計算 I：冪乗法・逆反復・Rayleigh 商反復と同時反復

> 冪乗法が固有値の比 |λ₂/λ₁| の速さで収束すること、Rayleigh 商の 2 次の精度、シフトつき逆反復の収束率、Rayleigh 商反復の局所 3 次収束、同時反復による不変部分空間の収束を証明し、数値例で確かめる。
> https://rikai.mugen-giken.com/mathematics/numerical-linear-algebra/power-and-inverse-iteration

## 0. この記事の要点

行列の固有値は、行列が「ベクトルをどれだけ伸ばす向きがあるか」を表す数です。小さな行列なら方程式を解いて求められますが、大きな行列では、適当なベクトルに行列を何度も掛けるだけで、いちばん強く伸びる向きが浮かび上がってきます。この記事では、この単純な繰り返しがなぜ固有値と固有ベクトルに行き着くのか、どれくらいの速さで近づくのか、そして掛ける前に行列を少しずらす工夫でどれだけ速くなるのかを、数値例とともに確かめます。

- **冪乗法**は $\boldsymbol{x}_{k+1} = A\boldsymbol{x}_k/\|A\boldsymbol{x}_k\|$ を繰り返すだけの算法です。[対角化可能](/mathematics/linear-algebra/diagonalization-and-jordan-form#def-diagonalizable)で $|\lambda_1| > |\lambda_2|$ なら、$\boldsymbol{x}_k$ と[固有ベクトル](/mathematics/linear-algebra/eigenvalues#def-eigen) $\boldsymbol{v}_1$ のなす角は $O(|\lambda_2/\lambda_1|^k)$ で $0$ に近づきます。
- Hermite 行列では、Rayleigh 商の誤差は角の正弦の **2 乗**に比例します（$R_A(\boldsymbol{x}) - \lambda = \sin^2\theta\,(R_A(\boldsymbol{w}) - \lambda)$）。このため固有値は $|\lambda_2/\lambda_1|^{2k}$ の速さで求まります。
- **シフトつき逆反復**は $(A - \mu I)^{-1}$ に対する冪乗法で、収束率は $|\lambda_J - \mu|/|\lambda_K - \mu|$（$\lambda_J$ は $\mu$ に最も近い固有値、$\lambda_K$ は 2 番目に近い固有値）です。シフトを固有値に近づけるほど速くなります。
- シフトを毎回 Rayleigh 商に取り替える **Rayleigh 商反復**は、Hermite 行列では角の正接が $\tan\theta_{k+1} \le (2\Delta/\delta)\tan^3\theta_k$ を満たし、局所 3 次収束（誤差が 1 回ごとにおよそ 3 乗になる速さの収束）します。
- $p$ 本のベクトルを同時に掛けて直交化する**同時反復**は、優勢な $p$ 次元の不変部分空間（行列を掛けても外へ出ない部分空間）に $O(|\lambda_{p+1}/\lambda_p|^k)$ で近づきます。これが次の章の [QR 法](/mathematics/numerical-linear-algebra/qr-algorithm#def-qr-iteration)の収束の理論の土台になります。
- 計算した近似固有対は、残差 $\boldsymbol{r} = A\boldsymbol{x} - R_A(\boldsymbol{x})\boldsymbol{x}$ を使って事後に評価できます（残差による評価・Temple の不等式・Bauer–Fike の定理。いずれも、残差の大きさから固有値の誤差を押さえる不等式です）。

<Aside type="tip" title="この記事で使う事前知識">

- **固有値と固有ベクトル**: 行列を掛けても向きが変わらないベクトルと、その伸び縮みの倍率。→ [固有値と固有ベクトル](/mathematics/linear-algebra/eigenvalues#def-eigen)
- **対角化可能**: 固有ベクトルだけで空間全体の基底が作れる、という性質。→ [対角化可能](/mathematics/linear-algebra/diagonalization-and-jordan-form#def-diagonalizable)
- **スペクトル定理**: Hermite 行列（実対称行列の複素版）は、正規直交な固有ベクトルの基底をもつ。→ [スペクトル定理](/mathematics/linear-algebra/spectral-theorem)
- **正規直交基底**: 長さ 1 で互いに直交するベクトルからなる基底。→ [正規直交基底](/mathematics/linear-algebra/inner-product-spaces#def-orthonormal)
- **直交射影**: ベクトルを、ある直線や部分空間の上に「真上から落とした影」に置き換える操作。→ [直交分解定理](/mathematics/linear-algebra/inner-product-spaces#thm-orthogonal-decomposition)
- **LU 分解**: 行列を下三角行列と上三角行列の積に分けること。連立方程式を何度も解くときに使う。→ [LU 分解](/mathematics/numerical-linear-algebra/lu-and-pivoting#def-lu)

</Aside>

## 1. 動機

研究で使う固有値の計算のほとんどは、`numpy.linalg.eigh` や `scipy.sparse.linalg.eigsh` を呼ぶだけで済みます。それでも「何回反復すれば何桁合うのか」「固有値が近いと何が起きるのか」「求めた固有値はどこまで信用できるのか」を答えるには、中で動いている反復の理論が要ります。

固有値問題は多項式の根を求める問題を含むので、5 次以上では有限回の四則と冪根で解く公式がありません。したがって固有値の算法は必ず**反復法**です。その最も単純な形が冪乗法で、QR 法・Lanczos 法・Arnoldi 法といった実用の算法は、どれも冪乗法を賢く組み合わせたものとして理解できます。

本章では、固有ベクトルを含む方向へベクトルを寄せていく反復を、次の 4 段で扱います。

1. 冪乗法：$A^k\boldsymbol{x}_0$ の方向は、絶対値最大の固有値の固有ベクトルへ向かう。
2. 逆反復：$(A - \mu I)^{-1}$ に冪乗法を使えば、$\mu$ に最も近い固有値が「最大」になる。
3. Rayleigh 商反復：シフト $\mu$ を毎回いまの近似固有値に更新すると、収束は 3 次になる。
4. 同時反復：1 本のベクトルではなく部分空間を反復すると、上位 $p$ 個の固有値に対応する不変部分空間が求まる。

証明はどれも「固有ベクトルの基底で展開し、各成分が固有値の冪で伸び縮みする様子を見る」という同じ考え方です。

## 2. 準備：角・Rayleigh 商・2 ノルム

この章では $\mathbb{C}^n$ の標準内積 $\boldsymbol{y}^{*}\boldsymbol{x}$ とそのノルム $\|\boldsymbol{x}\| = (\boldsymbol{x}^{*}\boldsymbol{x})^{1/2}$ だけを使います。行列 $B \in \mathbb{C}^{m\times n}$ のノルムは、このノルムから誘導される作用素ノルム
$$
\|B\| = \sup_{\boldsymbol{x}\ne\boldsymbol{0}} \frac{\|B\boldsymbol{x}\|}{\|\boldsymbol{x}\|}
$$
です。$B$ の第 $i$ 行を $\boldsymbol{b}_i^{*}$ とすると、Cauchy–Schwarz の不等式（<Ref to="mathematics/linear-algebra/inner-product-spaces#thm-cauchy-schwarz" />）から $\|B\boldsymbol{x}\|^2 = \sum_i |\boldsymbol{b}_i^{*}\boldsymbol{x}|^2 \le (\sum_i \|\boldsymbol{b}_i\|^2)\|\boldsymbol{x}\|^2$ なので、この上限は有限です。定義から直ちに $\|B\boldsymbol{x}\| \le \|B\|\|\boldsymbol{x}\|$、$\|BC\| \le \|B\|\|C\|$ が従います。対角行列 $D = \operatorname{diag}(d_1, \ldots, d_n)$ については $\|D\boldsymbol{x}\|^2 = \sum_i |d_i|^2|x_i|^2 \le \max_i |d_i|^2 \|\boldsymbol{x}\|^2$ で、最大の $|d_i|$ を与える座標ベクトルで等号が成り立つので $\|D\| = \max_i |d_i|$ です。

以下の定義は、反復が「固有ベクトルの方向（1 本のときは直線、同時反復のときは部分空間）にどれだけ近づいたか」を測るための物差しです。1 本のベクトルには角を、部分空間どうしには、片方のどのベクトルももう一方に近いかどうかを表す隔たりを使います。

<Definition id="def-angle" title="ベクトルどうし・ベクトルと部分空間のなす角">
$\boldsymbol{x}, \boldsymbol{v} \in \mathbb{C}^n$ を零でないベクトルとする。$\boldsymbol{v}$ への直交射影を $P_{\boldsymbol{v}}\boldsymbol{x} = \dfrac{\boldsymbol{v}^{*}\boldsymbol{x}}{\boldsymbol{v}^{*}\boldsymbol{v}}\boldsymbol{v}$ とし、
$$
\cos\angle(\boldsymbol{x}, \boldsymbol{v}) = \frac{|\boldsymbol{v}^{*}\boldsymbol{x}|}{\|\boldsymbol{x}\|\|\boldsymbol{v}\|},\qquad
\sin\angle(\boldsymbol{x}, \boldsymbol{v}) = \frac{\|\boldsymbol{x} - P_{\boldsymbol{v}}\boldsymbol{x}\|}{\|\boldsymbol{x}\|}
$$
と定める。$\cos\angle \ne 0$ のとき $\tan\angle = \sin\angle/\cos\angle$ とする。角 $\angle(\boldsymbol{x}, \boldsymbol{v}) \in [0, \pi/2]$ はこの正弦・余弦をもつ角である。

部分空間 $\mathcal{S} \ne \{\boldsymbol{0}\}$ への直交射影を $P_{\mathcal{S}}$ とするとき（<Ref to="mathematics/linear-algebra/inner-product-spaces#thm-orthogonal-decomposition" /> により存在する）、$\sin\angle(\boldsymbol{x}, \mathcal{S}) = \|\boldsymbol{x} - P_{\mathcal{S}}\boldsymbol{x}\|/\|\boldsymbol{x}\|$ とおき、部分空間 $\mathcal{U}$ から $\mathcal{S}$ への**隔たり**を
$$
d(\mathcal{U}, \mathcal{S}) = \sup_{\boldsymbol{x}\in\mathcal{U},\ \boldsymbol{x}\ne\boldsymbol{0}} \sin\angle(\boldsymbol{x}, \mathcal{S})
$$
で定める。
</Definition>

$d(\mathcal{U}, \mathcal{S})$ が小さいとは、「$\mathcal{U}$ のどの単位ベクトルも $\mathcal{S}$ のすぐ近くにある」ということです。

<Lemma id="lem-angle" title="角の基本性質">
$\boldsymbol{x}, \boldsymbol{v}$ を零でないベクトルとする。

1. $\cos^2\angle(\boldsymbol{x}, \boldsymbol{v}) + \sin^2\angle(\boldsymbol{x}, \boldsymbol{v}) = 1$。
2. $\sin\angle(\boldsymbol{x}, \boldsymbol{v}) = \min_{\alpha\in\mathbb{C}} \|\boldsymbol{x} - \alpha\boldsymbol{v}\|/\|\boldsymbol{x}\|$。部分空間 $\mathcal{S}$ についても $\sin\angle(\boldsymbol{x}, \mathcal{S}) = \min_{\boldsymbol{s}\in\mathcal{S}} \|\boldsymbol{x} - \boldsymbol{s}\|/\|\boldsymbol{x}\|$。
3. 零でない複素数 $a, b$ について $\angle(a\boldsymbol{x}, b\boldsymbol{v}) = \angle(\boldsymbol{x}, \boldsymbol{v})$。
4. $\boldsymbol{x} = a\boldsymbol{v} + \boldsymbol{z}$、$\boldsymbol{v}^{*}\boldsymbol{z} = 0$、$a \ne 0$ と書けるとき $\tan\angle(\boldsymbol{x}, \boldsymbol{v}) = \|\boldsymbol{z}\|/(|a|\|\boldsymbol{v}\|)$。
</Lemma>

<Proof of="lem-angle">
$\boldsymbol{p} = P_{\boldsymbol{v}}\boldsymbol{x}$、$\boldsymbol{z} = \boldsymbol{x} - \boldsymbol{p}$ とおくと $\boldsymbol{v}^{*}\boldsymbol{z} = \boldsymbol{v}^{*}\boldsymbol{x} - \boldsymbol{v}^{*}\boldsymbol{x} = 0$ です。

1. $\boldsymbol{p}$ は $\boldsymbol{v}$ の定数倍なので $\boldsymbol{p}^{*}\boldsymbol{z} = 0$ で、$\|\boldsymbol{x}\|^2 = \|\boldsymbol{p}\|^2 + \|\boldsymbol{z}\|^2$ です。$\|\boldsymbol{p}\| = |\boldsymbol{v}^{*}\boldsymbol{x}|/\|\boldsymbol{v}\|$ なので、両辺を $\|\boldsymbol{x}\|^2$ で割れば主張になります。
2. 任意の $\alpha$ について $\boldsymbol{x} - \alpha\boldsymbol{v} = \boldsymbol{z} + (\boldsymbol{p} - \alpha\boldsymbol{v})$ で、第 2 項は $\boldsymbol{v}$ の定数倍なので $\boldsymbol{z}$ と直交します。よって $\|\boldsymbol{x} - \alpha\boldsymbol{v}\|^2 = \|\boldsymbol{z}\|^2 + \|\boldsymbol{p} - \alpha\boldsymbol{v}\|^2 \ge \|\boldsymbol{z}\|^2$ で、等号は $\alpha\boldsymbol{v} = \boldsymbol{p}$ で成り立ちます。部分空間の場合も、$\boldsymbol{x} - P_{\mathcal{S}}\boldsymbol{x}$ が $\mathcal{S}$ に直交すること（<Ref to="mathematics/linear-algebra/inner-product-spaces#thm-orthogonal-decomposition" />）から同じ計算で示せます。
3. 余弦の定義の分子・分母がともに $|a||b|$ 倍になるので余弦は変わらず、1 により正弦も変わりません。
4. 分解 $\boldsymbol{x} = \boldsymbol{p} + \boldsymbol{z}$ は一意です（$\boldsymbol{v}$ の倍数と $\boldsymbol{v}$ に直交するベクトルへの分解）。よって $\boldsymbol{p} = a\boldsymbol{v}$ で、$\tan\angle = \|\boldsymbol{z}\|/\|\boldsymbol{p}\| = \|\boldsymbol{z}\|/(|a|\|\boldsymbol{v}\|)$ です。
</Proof>

<Figure caption="固有ベクトル v の方向と、それに直交する方向 w への分解。x = cos θ · v + sin θ · w と書くと、本章の評価はすべて θ の漸化式になる。">
<svg viewBox="0 0 520 260" width="100%" role="img" aria-label="単位ベクトル x を固有ベクトル v の方向の成分と、v に直交する w の方向の成分に分解した図。">
  <g stroke="currentColor" stroke-width="1.5" fill="none">
    <line x1="60" y1="220" x2="470" y2="220" />
    <line x1="60" y1="220" x2="60" y2="30" />
    <line x1="60" y1="220" x2="380" y2="80" stroke="var(--sl-color-accent)" stroke-width="2.5" />
    <line x1="380" y1="80" x2="380" y2="220" stroke-dasharray="6 5" />
    <path d="M 140 220 A 80 80 0 0 0 133 188" />
  </g>
  <g fill="currentColor" font-size="16">
    <text x="476" y="226">v</text>
    <text x="52" y="24">w</text>
    <text x="388" y="76" fill="var(--sl-color-accent)">x</text>
    <text x="150" y="208">θ</text>
    <text x="200" y="244">cos θ（固有ベクトルの成分）</text>
    <text x="388" y="160">sin θ</text>
  </g>
</svg>
</Figure>

<Definition id="def-rayleigh-quotient" title="Rayleigh 商と残差">
$A \in \mathbb{C}^{n\times n}$、$\boldsymbol{x} \ne \boldsymbol{0}$ について
$$
R_A(\boldsymbol{x}) = \frac{\boldsymbol{x}^{*}A\boldsymbol{x}}{\boldsymbol{x}^{*}\boldsymbol{x}}
$$
を $\boldsymbol{x}$ の **Rayleigh 商**、$\boldsymbol{r} = A\boldsymbol{x} - R_A(\boldsymbol{x})\boldsymbol{x}$ を**残差**という。
</Definition>

$A$ が Hermite 行列なら $R_A(\boldsymbol{x})$ は実数で、最小の固有値と最大の固有値の間にあります（<Ref to="mathematics/linear-algebra/spectral-theorem#thm-rayleigh" />。そこでの $R(\boldsymbol{x})$ と同じものです）。

## 3. 冪乗法

<Definition id="def-power-method" title="冪乗法">
$A \in \mathbb{C}^{n\times n}$ と $\boldsymbol{x}_0 \ne \boldsymbol{0}$ に対し、$A\boldsymbol{x}_k \ne \boldsymbol{0}$ である限り
$$
\boldsymbol{x}_{k+1} = \frac{A\boldsymbol{x}_k}{\|A\boldsymbol{x}_k\|},\qquad \mu_{k+1} = R_A(\boldsymbol{x}_{k+1})
$$
で $\boldsymbol{x}_k$ と固有値の近似 $\mu_k$ を作る反復を**冪乗法**という。
</Definition>

帰納法により $\boldsymbol{x}_k$ は $A^k\boldsymbol{x}_0$ の正の定数倍です。正規化は桁あふれを防ぐためだけのもので、方向は $A^k\boldsymbol{x}_0$ と同じです。1 回の反復の主な手間は行列とベクトルの積 1 回なので、疎行列なら非零成分の個数に比例する手間で済みます。

下の動画は 2 次の対称行列（固有ベクトル $\boldsymbol{v}_1$ の向きは共通）で $\boldsymbol{x}_k$ の向きが $\boldsymbol{v}_1$ に寄っていく様子です。比 $|\lambda_2/\lambda_1|$ が大きい左は遅く、小さい右は速く収束します。

<Figure caption="冪乗法で単位ベクトル x_k（赤い矢印）が固有ベクトル v₁ の方向（緑の破線）へ近づく様子。左は比 0.8、右は比 0.4。薄い点はこれまでの x_j。">
<img src="/figures/power-method-arrows.gif" alt="単位円上で、冪乗法の反復ごとに矢印が固有ベクトルの方向へ回っていく動画。比 0.8 の左は少しずつ、比 0.4 の右は数回でほぼ一致する。" loading="lazy" />
</Figure>

<Theorem id="thm-power-method" title="冪乗法の収束">
$A \in \mathbb{C}^{n\times n}$ は対角化可能で、固有値を重複を込めて $|\lambda_1| > |\lambda_2| \ge |\lambda_3| \ge \cdots \ge |\lambda_n|$ と並べられるとする。対応する固有ベクトル $\boldsymbol{v}_1, \ldots, \boldsymbol{v}_n$（$\|\boldsymbol{v}_i\| = 1$）は基底をなすとし、$\boldsymbol{x}_0 = \sum_{i=1}^{n} c_i\boldsymbol{v}_i$ で $c_1 \ne 0$ とする。このとき冪乗法はすべての $k$ で定義され、
$$
r = \left|\frac{\lambda_2}{\lambda_1}\right|,\qquad S = \sum_{i=2}^{n}\frac{|c_i|}{|c_1|}
$$
とおくと、$Sr^k < 1$ を満たす $k$ について
$$
\sin\angle(\boldsymbol{x}_k, \boldsymbol{v}_1) \le \frac{S r^k}{1 - S r^k}
$$
が成り立つ。とくに $\sin\angle(\boldsymbol{x}_k, \boldsymbol{v}_1) = O(r^k)$ である。
</Theorem>

<Proof of="thm-power-method">
対角化可能なので固有ベクトルの基底がとれます（<Ref to="mathematics/linear-algebra/diagonalization-and-jordan-form#thm-diagonalizable-basis" />）。$A^k\boldsymbol{v}_i = \lambda_i^k\boldsymbol{v}_i$ なので
$$
A^k\boldsymbol{x}_0 = \sum_{i=1}^{n} c_i\lambda_i^k\boldsymbol{v}_i .
$$
$|\lambda_1| > |\lambda_2| \ge 0$ より $\lambda_1 \ne 0$ で、$\boldsymbol{v}_1$ の係数 $c_1\lambda_1^k$ は $0$ でありません。$\boldsymbol{v}_i$ は一次独立なので $A^k\boldsymbol{x}_0 \ne \boldsymbol{0}$ で、冪乗法は止まりません。

$\boldsymbol{y}_k = A^k\boldsymbol{x}_0/(c_1\lambda_1^k)$ とおくと
$$
\boldsymbol{y}_k = \boldsymbol{v}_1 + \boldsymbol{w}_k,\qquad \boldsymbol{w}_k = \sum_{i=2}^{n}\frac{c_i}{c_1}\left(\frac{\lambda_i}{\lambda_1}\right)^{k}\boldsymbol{v}_i
$$
で、$|\lambda_i/\lambda_1| \le r$（$i \ge 2$）と $\|\boldsymbol{v}_i\| = 1$ から三角不等式で $\|\boldsymbol{w}_k\| \le Sr^k$ です。$\boldsymbol{x}_k$ は $\boldsymbol{y}_k$ の零でない定数倍なので、<Ref to="lem-angle" /> の 3 と 2 から
$$
\sin\angle(\boldsymbol{x}_k, \boldsymbol{v}_1) = \sin\angle(\boldsymbol{y}_k, \boldsymbol{v}_1) \le \frac{\|\boldsymbol{y}_k - \boldsymbol{v}_1\|}{\|\boldsymbol{y}_k\|} = \frac{\|\boldsymbol{w}_k\|}{\|\boldsymbol{v}_1 + \boldsymbol{w}_k\|} .
$$
$\|\boldsymbol{v}_1 + \boldsymbol{w}_k\| \ge 1 - \|\boldsymbol{w}_k\| \ge 1 - Sr^k > 0$ なので主張が従います。
</Proof>

収束率 $r = |\lambda_2/\lambda_1|$ は行列だけで決まり、初期ベクトルは定数 $S$ にしか効きません。$r = 0.99$ なら 1 桁合わせるのに約 230 回かかるので、冪乗法そのものは「最大固有値が他から十分離れている」ときにしか実用になりません。この遅さを直すのが §4 以降のシフトです。

方向が分かれば固有値も分かります。次の系は一般の（Hermite とは限らない）行列での評価です。

<Corollary id="cor-power-eigenvalue" title="Rayleigh 商による固有値の評価（一般の行列）">
$A\boldsymbol{v} = \lambda\boldsymbol{v}$、$\boldsymbol{v} \ne \boldsymbol{0}$ とする。任意の $\boldsymbol{x} \ne \boldsymbol{0}$ について
$$
|R_A(\boldsymbol{x}) - \lambda| \le \|A - \lambda I\|\,\sin\angle(\boldsymbol{x}, \boldsymbol{v}) .
$$
とくに <Ref to="thm-power-method" /> の仮定のもとで $|\mu_k - \lambda_1| = O(r^k)$ である。
</Corollary>

<Proof of="cor-power-eigenvalue">
<Ref to="lem-angle" /> の 3 により $\|\boldsymbol{x}\| = 1$ としてよく、Rayleigh 商も $\boldsymbol{x}$ の定数倍で変わりません。$\boldsymbol{d} = \boldsymbol{x} - P_{\boldsymbol{v}}\boldsymbol{x}$ とおくと $\|\boldsymbol{d}\| = \sin\angle(\boldsymbol{x}, \boldsymbol{v})$ で、$(A - \lambda I)P_{\boldsymbol{v}}\boldsymbol{x} = \boldsymbol{0}$ です。したがって
$$
R_A(\boldsymbol{x}) - \lambda = \boldsymbol{x}^{*}(A - \lambda I)\boldsymbol{x} = \boldsymbol{x}^{*}(A - \lambda I)\boldsymbol{d}
$$
で、Cauchy–Schwarz の不等式（<Ref to="mathematics/linear-algebra/inner-product-spaces#thm-cauchy-schwarz" />）から $|R_A(\boldsymbol{x}) - \lambda| \le \|\boldsymbol{x}\|\|(A - \lambda I)\boldsymbol{d}\| \le \|A - \lambda I\|\|\boldsymbol{d}\|$ です。後半は <Ref to="thm-power-method" /> の評価を代入すれば従います。
</Proof>

### 3.1. Hermite 行列での 2 次の精度

Hermite 行列では Rayleigh 商の精度が 1 段上がります。誤差が角の正弦の 1 乗ではなく 2 乗で効くのです。たとえば方向が 0.01 ずれていても、Rayleigh 商のずれは 0.0001 に比例する程度で済みます。次の補題は、ベクトルを固有ベクトルの成分とそれに直交する成分に分け、前者が固有値を正確に与え、後者のずれだけが誤差になることを示します。

<Lemma id="lem-rayleigh-quadratic" title="Rayleigh 商の 2 次の精度">
$A$ を Hermite 行列とし、その最大・最小の固有値を $\lambda_{\max}$, $\lambda_{\min}$ とする。$A\boldsymbol{v} = \lambda\boldsymbol{v}$、$\|\boldsymbol{v}\| = 1$ とし、単位ベクトル $\boldsymbol{x}$ を $\boldsymbol{x} = \alpha\boldsymbol{v} + \beta\boldsymbol{w}$（$\|\boldsymbol{w}\| = 1$、$\boldsymbol{v}^{*}\boldsymbol{w} = 0$、$|\beta| = \sin\angle(\boldsymbol{x}, \boldsymbol{v})$）と分解する。このとき
$$
R_A(\boldsymbol{x}) - \lambda = \sin^2\angle(\boldsymbol{x}, \boldsymbol{v})\,\bigl(R_A(\boldsymbol{w}) - \lambda\bigr)
$$
であり、とくに $|R_A(\boldsymbol{x}) - \lambda| \le (\lambda_{\max} - \lambda_{\min})\sin^2\angle(\boldsymbol{x}, \boldsymbol{v})$ である。（$\sin\angle(\boldsymbol{x}, \boldsymbol{v}) = 0$ のときは $\boldsymbol{w}$ を $\boldsymbol{v}$ に直交する任意の単位ベクトルとする。）
</Lemma>

<Proof of="lem-rayleigh-quadratic">
分解は $\alpha\boldsymbol{v} = P_{\boldsymbol{v}}\boldsymbol{x}$、$\beta\boldsymbol{w} = \boldsymbol{x} - P_{\boldsymbol{v}}\boldsymbol{x}$ として作れ、<Ref to="lem-angle" /> の 1 から $|\alpha|^2 + |\beta|^2 = 1$ です。$A$ は Hermite で $\lambda$ は実数なので $\boldsymbol{v}^{*}A\boldsymbol{w} = (A\boldsymbol{v})^{*}\boldsymbol{w} = \lambda\boldsymbol{v}^{*}\boldsymbol{w} = 0$、同様に $\boldsymbol{w}^{*}A\boldsymbol{v} = 0$ です。よって交差項が消えて
$$
R_A(\boldsymbol{x}) = \boldsymbol{x}^{*}A\boldsymbol{x} = |\alpha|^2\lambda + |\beta|^2\,\boldsymbol{w}^{*}A\boldsymbol{w} = (1 - |\beta|^2)\lambda + |\beta|^2 R_A(\boldsymbol{w})
$$
となり、$\lambda$ を移項すれば等式を得ます。$R_A(\boldsymbol{w})$ と $\lambda$ はともに $[\lambda_{\min}, \lambda_{\max}]$ に入る（<Ref to="mathematics/linear-algebra/spectral-theorem#thm-rayleigh" /> の 1）ので、$|R_A(\boldsymbol{w}) - \lambda| \le \lambda_{\max} - \lambda_{\min}$ です。
</Proof>

<Corollary id="cor-power-rayleigh" title="Hermite 行列の冪乗法">
$A$ を Hermite 行列とし、固有値を $|\lambda_1| > |\lambda_2| \ge \cdots \ge |\lambda_n|$ と並べ、対応する正規直交な固有ベクトルを $\boldsymbol{u}_1, \ldots, \boldsymbol{u}_n$ とする。$\boldsymbol{u}_1^{*}\boldsymbol{x}_0 \ne 0$ ならば、冪乗法の $\boldsymbol{x}_k$ と $\mu_k = R_A(\boldsymbol{x}_k)$ は、$r = |\lambda_2/\lambda_1|$ として
$$
\tan\angle(\boldsymbol{x}_k, \boldsymbol{u}_1) \le r^k\tan\angle(\boldsymbol{x}_0, \boldsymbol{u}_1),\qquad
|\mu_k - \lambda_1| \le (\lambda_{\max} - \lambda_{\min})\,r^{2k}\tan^2\angle(\boldsymbol{x}_0, \boldsymbol{u}_1)
$$
を満たす。
</Corollary>

<Proof of="cor-power-rayleigh">
正規直交な固有ベクトルの基底はスペクトル定理（<Ref to="mathematics/linear-algebra/spectral-theorem#thm-spectral" />）で存在します。$c_i = \boldsymbol{u}_i^{*}\boldsymbol{x}_0$ とおくと $A^k\boldsymbol{x}_0 = \sum_i c_i\lambda_i^k\boldsymbol{u}_i$ で、$\boldsymbol{z} = \sum_{i\ge2}c_i\lambda_i^k\boldsymbol{u}_i$ は $\boldsymbol{u}_1$ に直交します。<Ref to="lem-angle" /> の 4 と 3（$\boldsymbol{x}_k$ は $A^k\boldsymbol{x}_0$ の正の定数倍）と、正規直交基底での三平方の定理から
$$
\tan\angle(\boldsymbol{x}_k, \boldsymbol{u}_1) = \frac{\bigl(\sum_{i\ge2}|c_i|^2|\lambda_i|^{2k}\bigr)^{1/2}}{|c_1||\lambda_1|^k} \le r^k\,\frac{\bigl(\sum_{i\ge2}|c_i|^2\bigr)^{1/2}}{|c_1|} = r^k\tan\angle(\boldsymbol{x}_0, \boldsymbol{u}_1)
$$
です。$\sin^2 \le \tan^2$ と <Ref to="lem-rayleigh-quadratic" /> から後半が従います。
</Proof>

一般の行列では方向の誤差と固有値の誤差が同じ $r^k$ でしたが、Hermite 行列では固有値の誤差が $r^{2k}$ になります。反復の回数で言えば、固有値は固有ベクトルの半分の回数で同じ桁数に達します。

```python
# Python 3.12.10 / NumPy 2.5.2（x86-64, OpenBLAS）／乱数種 20261006
import numpy as np

rng = np.random.default_rng(20261006)
n = 50
lam = np.concatenate(([10.0, 8.0], np.linspace(-6, 6, n - 2)))
Q, _ = np.linalg.qr(rng.standard_normal((n, n)))
A = (Q * lam) @ Q.T          # 固有値 lam、固有ベクトル Q の列
v1 = Q[:, 0]

x = rng.standard_normal(n)
x /= np.linalg.norm(x)
print(" k   sin(角)    |rho-l1|   10 回の比(角)  比(rho)")
prev = None
for k in range(51):
    if k % 10 == 0:
        s = np.linalg.norm(x - (v1 @ x) * v1)
        e = abs(x @ A @ x - 10.0)
        r = "" if prev is None else \
            f"{s / prev[0]:.2e}  {e / prev[1]:.2e}"
        print(f"{k:2d}  {s:.2e}  {e:.2e}  {r}")
        prev = (s, e)
    x = A @ x
    x /= np.linalg.norm(x)
print("予測:", f"{0.8**10:.3f}", f"{0.8**20:.4f}")
```

```text
 k   sin(角)    |rho-l1|   10 回の比(角)  比(rho)
 0  9.05e-01  8.11e+00  
10  3.71e-03  6.59e-05  4.10e-03  8.14e-06
20  2.53e-04  1.29e-07  6.82e-02  1.95e-03
30  2.71e-05  1.47e-09  1.07e-01  1.14e-02
40  2.91e-06  1.69e-11  1.07e-01  1.15e-02
50  3.12e-07  1.94e-13  1.07e-01  1.14e-02
予測: 0.107 0.0115
```

**検算.** (a) 固有値は構成に使った値 $10, 8$ と $[-6, 6]$ の等間隔点なので、$r = 0.8$ が既知です。(b) 角は構成に使った固有ベクトル `Q[:, 0]` との間で測っています。(c) $k \ge 30$ で、10 回あたりの比は角で $0.107 \approx 0.8^{10}$、Rayleigh 商で $0.0114 \approx 0.8^{20}$ となり、<Ref to="thm-power-method" /> と <Ref to="cor-power-rayleigh" /> が予言する傾きに一致します。最初の 10 回の比がそれより小さいのは、初期ベクトルの誤差の大半が $|\lambda_i| \le 6$ の成分（10 回で $0.6^{10} \approx 0.006$ 倍に縮む）にあったためです。$k = 50$ での評価式の右辺は $(\lambda_{\max} - \lambda_{\min})r^{100}\tan^2\angle(\boldsymbol{x}_0, \boldsymbol{u}_1) \approx 16 \times 2.0\times10^{-10} \times 4.5 \approx 1.5\times10^{-8}$ で、実際の誤差 $1.9\times10^{-13}$ はその内側にあります。

<Figure caption="上の表の誤差を片対数で描いたもの（横軸は反復回数 k、縦軸は誤差の常用対数）。角（細線）の傾きは log₁₀ 0.8、Rayleigh 商（太線）の傾きはその 2 倍になる。">
<svg viewBox="0 0 720 400" width="100%" role="img" aria-label="冪乗法の角の誤差と Rayleigh 商の誤差を反復回数に対して片対数で描いた 2 本の折れ線。Rayleigh 商の方が 2 倍の傾きで下がる。">
  <g stroke="currentColor" stroke-width="1" opacity="0.35">
    <line x1="80" y1="54" x2="680" y2="54" />
    <line x1="80" y1="151" x2="680" y2="151" />
    <line x1="80" y1="249" x2="680" y2="249" />
    <line x1="80" y1="346" x2="680" y2="346" />
    <line x1="80" y1="30" x2="80" y2="370" />
  </g>
  <g fill="currentColor" font-size="13" opacity="0.8">
    <text x="72" y="58" text-anchor="end">1</text>
    <text x="72" y="155" text-anchor="end">1e-4</text>
    <text x="72" y="253" text-anchor="end">1e-8</text>
    <text x="72" y="350" text-anchor="end">1e-12</text>
    <text x="80" y="390" text-anchor="middle">0</text>
    <text x="200" y="390" text-anchor="middle">10</text>
    <text x="320" y="390" text-anchor="middle">20</text>
    <text x="440" y="390" text-anchor="middle">30</text>
    <text x="560" y="390" text-anchor="middle">40</text>
    <text x="680" y="390" text-anchor="middle">50</text>
  </g>
  <polyline fill="none" stroke="currentColor" stroke-width="1.5" points="80,55 200,113 320,142 440,165 560,189 680,212" />
  <polyline fill="none" stroke="var(--sl-color-accent)" stroke-width="3" points="80,32 200,156 320,222 440,269 560,316 680,363" />
  <g font-size="14">
    <text x="560" y="178" fill="currentColor">sin（角）</text>
    <text x="470" y="300" fill="var(--sl-color-accent)">|Rayleigh 商 − λ₁|</text>
  </g>
</svg>
</Figure>

### 3.2. 収束しない場合と遅い場合

仮定 $|\lambda_1| > |\lambda_2|$ と対角化可能性を外すと何が壊れるかを、2 つの例で見ます。

<Example id="ex-rotation" title="絶対値の等しい固有値：回転">
$A = \begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix}$（90° の回転）の固有値は $\pm i$ で、絶対値が等しいので <Ref to="thm-power-method" /> の仮定を満たしません。実際、$\boldsymbol{x}_0 = (1, 0)^{\mathsf{T}}$ から始めると $\boldsymbol{x}_k$ は $(1,0)^{\mathsf{T}}, (0,1)^{\mathsf{T}}, (-1,0)^{\mathsf{T}}, (0,-1)^{\mathsf{T}}$ を周期 4 で回り、どの方向にも収束しません。Rayleigh 商はつねに $0$ で、どちらの固有値にも近づきません。実行列の冪乗法は、絶対値最大の固有値が複素共役の対になると必ずこうなります。
</Example>

<Example id="ex-jordan-power" title="Jordan 細胞：1/k の遅い収束">
$J = \begin{pmatrix} \lambda & 1 \\ 0 & \lambda \end{pmatrix}$（$\lambda \ne 0$）は対角化できません（Jordan 標準形 <Ref to="mathematics/linear-algebra/diagonalization-and-jordan-form#thm-jordan-existence" /> の 2 次の細胞そのもの）。$J^k = \lambda^{k}\begin{pmatrix} 1 & k/\lambda \\ 0 & 1 \end{pmatrix}$ なので、$\boldsymbol{x}_0 = (0, 1)^{\mathsf{T}}$ に対し $J^k\boldsymbol{x}_0 = \lambda^{k-1}(k, \lambda)^{\mathsf{T}}$ です。唯一の固有ベクトルの方向 $\boldsymbol{e}_1$ とのなす角は $\tan\angle = |\lambda|/k$ で、確かに $0$ に近づきますが、その速さは幾何級数的ではなく $1/k$ です。1 桁合わせるのに反復回数を 10 倍にしなければなりません。
</Example>

## 4. シフトつき逆反復

冪乗法が見つけるのは絶対値最大の固有値だけです。$\mu$ が固有値でないとき、$(A - \mu I)^{-1}$ の固有値は $1/(\lambda_i - \mu)$ で、固有ベクトルは $A$ と同じです。$\mu$ に最も近い固有値が、$(A - \mu I)^{-1}$ では絶対値最大の固有値になります。

<Definition id="def-inverse-iteration" title="シフトつき逆反復">
$\mu \in \mathbb{C}$ が $A$ の固有値でないとき、$\boldsymbol{x}_0 \ne \boldsymbol{0}$ から
$$
(A - \mu I)\boldsymbol{y}_{k+1} = \boldsymbol{x}_k,\qquad \boldsymbol{x}_{k+1} = \frac{\boldsymbol{y}_{k+1}}{\|\boldsymbol{y}_{k+1}\|}
$$
を繰り返す反復を、シフト $\mu$ の**逆反復**という。
</Definition>

逆行列は作らず、$A - \mu I$ を 1 回 [LU 分解](/mathematics/numerical-linear-algebra/lu-and-pivoting#def-lu)しておいて、毎回は前進・後退代入（$O(n^2)$）だけを行います。

<Theorem id="thm-inverse-iteration" title="シフトつき逆反復の収束">
$A$ は <Ref to="thm-power-method" /> と同じく対角化可能で、固有値 $\lambda_1, \ldots, \lambda_n$（重複を込める）と単位固有ベクトル $\boldsymbol{v}_1, \ldots, \boldsymbol{v}_n$ が基底をなすとする。$\mu$ は固有値でなく、ある添字 $J$ について
$$
|\lambda_J - \mu| < |\lambda_K - \mu| \le |\lambda_i - \mu|\quad (i \ne J)
$$
を満たす $K \ne J$ があるとする（$\lambda_J$ は $\mu$ に最も近い固有値で単純、$\lambda_K$ は 2 番目に近い固有値）。$\boldsymbol{x}_0 = \sum_i c_i\boldsymbol{v}_i$ で $c_J \ne 0$ ならば、
$$
r = \frac{|\lambda_J - \mu|}{|\lambda_K - \mu|},\qquad S = \sum_{i\ne J}\frac{|c_i|}{|c_J|}
$$
として、$Sr^k < 1$ のとき $\sin\angle(\boldsymbol{x}_k, \boldsymbol{v}_J) \le Sr^k/(1 - Sr^k)$ が成り立つ。$A$ が Hermite 行列で $\mu$ が実数なら、さらに $\tan\angle(\boldsymbol{x}_k, \boldsymbol{v}_J) \le r^k\tan\angle(\boldsymbol{x}_0, \boldsymbol{v}_J)$ である（$\boldsymbol{v}_i$ は正規直交にとる）。
</Theorem>

<Proof of="thm-inverse-iteration">
$B = (A - \mu I)^{-1}$ とおくと $(A - \mu I)\boldsymbol{v}_i = (\lambda_i - \mu)\boldsymbol{v}_i$ の両辺に $B$ を掛けて $(\lambda_i - \mu)^{-1}$ で割れば $B\boldsymbol{v}_i = (\lambda_i - \mu)^{-1}\boldsymbol{v}_i$ です。よって $B$ は同じ固有ベクトルの基底で対角化でき、固有値 $\nu_i = (\lambda_i - \mu)^{-1}$ は仮定から $|\nu_J| > |\nu_K| \ge |\nu_i|$（$i \ne J$）を満たします。逆反復は $B$ に対する冪乗法そのものなので、添字を $J$ が先頭、$K$ が 2 番目になるよう並べ替えて <Ref to="thm-power-method" /> を使えば、比は $|\nu_K/\nu_J| = r$ で前半が従います。$A$ が Hermite で $\mu$ が実数なら $B$ も Hermite（$B^{*} = ((A - \mu I)^{*})^{-1} = B$）なので、<Ref to="cor-power-rayleigh" /> の前半を $B$ に使えば後半が従います。
</Proof>

$\mu$ を $\lambda_J$ に近づけるほど $r$ は $0$ に近づきます。固有値のよい近似（たとえば二分法や QR 法で求めた値）があれば、逆反復は 2〜3 回で固有ベクトルを機械精度まで求めます。これが LAPACK で三重対角行列（対角とその両隣にしか非零成分がない行列）の固有ベクトルを求める古典的な方法でした。

```python
# Python 3.12.10 / NumPy 2.5.2（x86-64, OpenBLAS）／乱数種 20261006
import numpy as np

rng = np.random.default_rng(20261006)
n = 50
lam = np.concatenate(([10.0, 8.0], np.linspace(-6, 6, n - 2)))
Q, _ = np.linalg.qr(rng.standard_normal((n, n)))
A = (Q * lam) @ Q.T
v = Q[:, 1]                       # 固有値 8 の固有ベクトル
x0 = rng.standard_normal(n)

def tan_angle(x):
    c = v @ x
    return np.linalg.norm(x - c * v) / abs(c)

print("  mu   予測の比  t1       t2       t3       t3/t2")
for mu in [8.5, 8.1, 8.01]:
    M = A - mu * np.eye(n)
    x, ts = x0 / np.linalg.norm(x0), []
    for k in range(3):
        x = np.linalg.solve(M, x)
        x /= np.linalg.norm(x)
        ts.append(tan_angle(x))
    pred = abs(8 - mu) / abs(10 - mu)
    t = "  ".join(f"{s:.1e}" for s in ts)
    print(f"{mu:5.2f}  {pred:.2e}  {t}  {ts[2] / ts[1]:.2e}")
```

```text
  mu   予測の比  t1       t2       t3       t3/t2
 8.50  3.33e-01  1.7e+01  5.2e+00  1.7e+00  3.28e-01
 8.10  5.26e-02  3.0e+00  1.4e-01  7.0e-03  5.09e-02
 8.01  5.03e-03  2.9e-01  1.3e-03  6.3e-06  4.88e-03
```

**検算.** (a) 固有値 $8$ に最も近い他の固有値は $10$ と $6$（どちらも距離 $2$）で、$\mu > 8$ のとき 2 番目に近いのは $10$ なので、予測の比は $|8 - \mu|/|10 - \mu|$ です。(b) 角は構成に使った固有ベクトルとの間で測っています。(c) 観測した $t_3/t_2$ は予測の比と 2 桁目まで合い、$\mu$ を $8$ に 10 倍近づけるごとに比も約 10 分の 1 になります。観測値が予測よりわずかに小さいのは、3 番目以降に近い固有値の成分がまだ残っていて、それがさらに速く縮むためです。

## 5. Rayleigh 商反復

逆反復のシフトを固定せず、毎回いまの近似ベクトルの Rayleigh 商に取り替えると、収束の次数そのものが上がります。

<Definition id="def-rqi" title="Rayleigh 商反復">
単位ベクトル $\boldsymbol{x}_0$ から、$\mu_k = R_A(\boldsymbol{x}_k)$ とおき、$A - \mu_k I$ が正則である限り
$$
(A - \mu_k I)\boldsymbol{y}_{k+1} = \boldsymbol{x}_k,\qquad \boldsymbol{x}_{k+1} = \frac{\boldsymbol{y}_{k+1}}{\|\boldsymbol{y}_{k+1}\|}
$$
を繰り返す反復を **Rayleigh 商反復**という。$\mu_k$ が固有値になったら止める（固有値が求まっている）。
</Definition>

毎回シフトが変わるので、1 回ごとに $A - \mu_k I$ を分解し直す必要があります（密行列なら $O(n^3)$、三重対角なら $O(n)$）。その代わり、次の定理のとおり収束は 3 次です。

定理に出てくる $\delta$ は、注目する固有値 $\lambda$ から最も近い別の固有値までの距離、$\Delta$ は固有値全体の幅です。仮定 $\Delta\sin^2\theta_0 < \delta/2$ は、Rayleigh 商の誤差の上限（<Ref to="lem-rayleigh-quadratic" /> の評価）が、他の固有値との距離の半分より小さい、つまり $\mu_k$ が目的の固有値 $\lambda$ に最も近いままである、ということを保証するためのものです。

<Theorem id="thm-rqi-cubic" title="Rayleigh 商反復の局所 3 次収束">
$A$ を $n$ 次 Hermite 行列（$n \ge 2$）、$\lambda$ をその単純な固有値、$\boldsymbol{v}$ を対応する単位固有ベクトルとし、
$$
\delta = \min\{|\lambda' - \lambda| : \lambda' \text{ は } \lambda \text{ と異なる } A \text{ の固有値}\},\qquad \Delta = \lambda_{\max} - \lambda_{\min}
$$
とおく。Rayleigh 商反復の $\theta_k = \angle(\boldsymbol{x}_k, \boldsymbol{v})$ が $\Delta\sin^2\theta_0 < \delta/2$ を満たすならば、反復が続く限り次が成り立つ。

1. $|\mu_k - \lambda| \le \Delta\sin^2\theta_k$ であり、$\mu_k$ は $\lambda$ 以外の固有値に一致しない。
2. $\displaystyle \tan\theta_{k+1} \le \frac{\Delta\sin^2\theta_k}{\delta - \Delta\sin^2\theta_k}\tan\theta_k \le \frac{2\Delta}{\delta}\tan^3\theta_k$。とくに $\theta_{k+1} \le \theta_k$ で、$\Delta\sin^2\theta_{k+1} < \delta/2$ も保たれる。

したがって反復が有限回で止まらなければ $\tan\theta_k \to 0$ であり、その収束は 3 次である。
</Theorem>

<Proof of="thm-rqi-cubic">
$\delta$ は $[\lambda_{\min}, \lambda_{\max}]$ の 2 点の距離なので $\delta \le \Delta$ で、仮定から $\sin^2\theta_0 < 1/2$、とくに $\cos\theta_0 > 0$ です。$k$ について帰納的に、$\Delta\sin^2\theta_k < \delta/2$ のもとで 1 と 2 を示します。

スペクトル定理（<Ref to="mathematics/linear-algebra/spectral-theorem#thm-spectral" />）で正規直交な固有ベクトル $\boldsymbol{u}_1, \ldots, \boldsymbol{u}_n$ をとります。$\lambda$ は単純なので、固有値が $\lambda$ であるのはただ 1 つ $\boldsymbol{u}_j$ だけで、$\boldsymbol{v}$ は $\boldsymbol{u}_j$ の絶対値 1 の定数倍です（$\boldsymbol{v}$ を基底で展開すると、$A\boldsymbol{v} = \lambda\boldsymbol{v}$ から固有値が $\lambda$ と異なる成分は 0）。よって $\boldsymbol{v}$ に直交するベクトル全体は $\{\boldsymbol{u}_i : i \ne j\}$ で張られます。

反復は $\boldsymbol{x}_k$ を絶対値 1 の複素数倍しても、$\mu_k$ も以後の方向も変わらないので、$\boldsymbol{v}^{*}\boldsymbol{x}_k = \cos\theta_k > 0$ としてかまいません。$\sin\theta_k = 0$ なら $\boldsymbol{x}_k$ は固有ベクトルで $\mu_k = \lambda$ となり反復は止まるので、$\sin\theta_k > 0$ とし、$\boldsymbol{x}_k = \cos\theta_k\,\boldsymbol{v} + \sin\theta_k\,\boldsymbol{w}$（$\|\boldsymbol{w}\| = 1$、$\boldsymbol{v}^{*}\boldsymbol{w} = 0$）と書きます。

**1 の証明.** <Ref to="lem-rayleigh-quadratic" /> から $|\mu_k - \lambda| \le \Delta\sin^2\theta_k < \delta/2$ です。$\lambda$ と異なる固有値 $\lambda'$ については $|\lambda' - \mu_k| \ge |\lambda' - \lambda| - |\lambda - \mu_k| > \delta - \delta/2 > 0$ なので、$\mu_k \ne \lambda'$ です。

**2 の証明.** 反復が続くので $\mu_k \ne \lambda$ で、1 と合わせて $A - \mu_k I$ は正則です。$\boldsymbol{w} = \sum_{i\ne j}a_i\boldsymbol{u}_i$ と書くと
$$
(A - \mu_k I)^{-1}\boldsymbol{x}_k = \frac{\cos\theta_k}{\lambda - \mu_k}\,\boldsymbol{v} + \sin\theta_k\sum_{i\ne j}\frac{a_i}{\lambda_i - \mu_k}\,\boldsymbol{u}_i
$$
で、第 2 項は $\boldsymbol{v}$ に直交し、そのノルムは $\sin\theta_k\,\|\boldsymbol{w}\|/\min_{i\ne j}|\lambda_i - \mu_k| \le \sin\theta_k/(\delta - |\lambda - \mu_k|)$ 以下です（1 の証明と同じ三角不等式）。<Ref to="lem-angle" /> の 4 と 3 から
$$
\tan\theta_{k+1} \le \frac{\sin\theta_k/(\delta - |\lambda - \mu_k|)}{\cos\theta_k/|\lambda - \mu_k|} = \frac{|\lambda - \mu_k|}{\delta - |\lambda - \mu_k|}\tan\theta_k .
$$
関数 $t \mapsto t/(\delta - t)$ は $[0, \delta)$ で増加なので、$|\lambda - \mu_k| \le \Delta\sin^2\theta_k$ を代入して 2 の最初の不等式を得ます。$\Delta\sin^2\theta_k < \delta/2$ から分母は $\delta/2$ より大きく、分子の係数は $1$ 未満なので $\tan\theta_{k+1} < \tan\theta_k$、すなわち $\theta_{k+1} < \theta_k$ で、$\sin^2\theta_{k+1} < \sin^2\theta_k$ から帰納法の仮定が保たれます。最後に $\sin^2\theta_k \le \tan^2\theta_k$ と分母 $> \delta/2$ から $(2\Delta/\delta)\tan^3\theta_k$ の評価を得ます。

最後に収束を示します。$c_k = \Delta\sin^2\theta_k/(\delta - \Delta\sin^2\theta_k)$ とおくと、2 から $\tan\theta_{k+1} \le c_k\tan\theta_k$ で、$\theta_k$ は減少するので $c_k \le c_0 < 1$ です（$c_0 < 1$ は $\Delta\sin^2\theta_0 < \delta/2$ と同値です）。よって $\tan\theta_k \le c_0^k\tan\theta_0 \to 0$ であり、各段で $\tan\theta_{k+1} \le (2\Delta/\delta)\tan^3\theta_k$ が成り立つので収束は 3 次です。
</Proof>

正接が 1 回ごとに 3 乗になるので、正しい桁数は 1 回ごとにほぼ 3 倍になります。単根の近くの Newton 法が桁数を 1 回ごとにほぼ 2 倍にする（[非線形方程式の反復解法](/mathematics/numerical-analysis/nonlinear-equations)）のと比べて、1 段高い次数です。固有値の誤差は 1 から $\sin^2\theta_k$ の程度なので、こちらの桁数も 1 回ごとにほぼ 3 倍です。

次のコードは、対角が $2$・副対角が $-1$ の $6$ 次の三重対角行列（固有値は $2 - 2\cos(j\pi/7)$、固有ベクトルは $(\sin(ij\pi/7))_i$ と閉じた形で分かる）で、Rayleigh 商反復を 100 桁で回したものです。100 桁（`mp.mp.dps = 100`、Python の多倍長計算ライブラリ mpmath の設定）を使うのは、桁数が 3 倍ずつ増えるので、倍精度（約 16 桁）では 3 回で限界に達して様子が見えなくなるためです。

```python
# Python 3.12.10 / NumPy 2.5.2 / mpmath 1.3.0（x86-64）
import mpmath as mp
import numpy as np
mp.mp.dps = 100
n = 6
A = 2 * mp.eye(n)          # 対角 2、副対角 -1 の三重対角行列
for i in range(n - 1):
    A[i, i + 1] = A[i + 1, i] = -1
th = mp.pi / (n + 1)
lam = 2 - 2 * mp.cos(th)                  # 最小の固有値
v = mp.matrix([mp.sin((j + 1) * th) for j in range(n)])
v = v / mp.norm(v)                         # その固有ベクトル

x = mp.matrix([1] * n) / mp.sqrt(n)
print("k  tan(角)    |mu_k - lam|")
for k in range(5):
    mu = (x.T * A * x)[0]
    c = abs((v.T * x)[0])
    t = mp.sqrt(1 - c**2) / c
    print(k, mp.nstr(t, 3), mp.nstr(abs(mu - lam), 3))
    y = mp.lu_solve(A - mu * mp.eye(n), x)
    x = y / mp.norm(y)
An, xd = np.array(A.tolist(), dtype=float), np.ones(n) / np.sqrt(n)
print("倍精度の |mu_k - lam|")
for k in range(4):
    mu = xd @ An @ xd
    e = abs(mu - float(lam))
    print(k, "< 1e-15" if e < 1e-15 else f"{e:.1e}")
    yd = np.linalg.solve(An - mu * np.eye(n), xd)
    xd = yd / np.linalg.norm(yd)
```

```text
k  tan(角)    |mu_k - lam|
0 0.307 0.135
1 0.0321 0.00144
2 3.38e-5 1.56e-9
3 3.87e-14 2.03e-27
4 5.79e-41 4.56e-81
倍精度の |mu_k - lam|
0 1.4e-01
1 1.4e-03
2 1.6e-09
3 < 1e-15
```

**検算.** (a) 固有値と固有ベクトルは閉じた形の値と比べています。(b) 倍精度の $|\mu_k - \lambda|$ は 100 桁の値と表示した桁で一致し、3 回目で倍精度の丸めの水準に達します。(c) 正接の指数は $-1.5 \to -4.5 \to -13.4 \to -40.2$ とほぼ 3 倍ずつ、固有値の誤差の指数は $-2.8 \to -8.8 \to -26.7 \to -80.3$ とやはりほぼ 3 倍ずつ進み、比 $\tan\theta_{k+1}/\tan^3\theta_k$ は $1.11, 1.02, 1.00, 1.00$ です。この行列では $\Delta = 4\cos(\pi/7) \approx 3.60$、$\delta = 2\cos(\pi/7) - 2\cos(2\pi/7) \approx 0.555$ で、定理の係数 $2\Delta/\delta \approx 13$ は実際の比より大きく、評価として正しい側にあります。なお $k = 0$ では $\Delta\sin^2\theta_0 \approx 0.31 > \delta/2$ で定理の仮定を満たしませんが、$k = 1$ 以降は満たしています（定理は十分条件です）。

<Remark id="rem-rqi-nonhermitian" title="一般の行列の Rayleigh 商反復">
Hermite でない行列では <Ref to="lem-rayleigh-quadratic" /> の 2 次の精度が成り立たず（<Ref to="cor-power-eigenvalue" /> の 1 次の評価しかない）、Rayleigh 商反復は単純な固有値の近くで局所 2 次収束にとどまります。左右の固有ベクトルを同時に反復する 2 側 Rayleigh 商反復にすると 3 次に戻ります。Ostrowski による一連の解析と、Parlett『The Symmetric Eigenvalue Problem』第 4 章の注を参照してください。
</Remark>

<Remark id="rem-rqi-global" title="Rayleigh 商反復の大域的な振る舞い">
<Ref to="thm-rqi-cubic" /> は初期ベクトルが固有ベクトルに十分近いときの局所的な主張です。Hermite 行列では、ほとんどすべての初期ベクトルから Rayleigh 商反復が何らかの固有ベクトルに収束すること（どの固有ベクトルに収束するかは予測しにくい）が Kahan と Parlett によって示されています。証明は残差のノルムの単調減少に基づく数頁の議論で、Parlett『The Symmetric Eigenvalue Problem』第 4 章にあります。本章では使いません。
</Remark>

<Remark id="rem-inverse-iteration-safe" title="ほとんど特異な系を解いても壊れない理由">
逆反復や Rayleigh 商反復では、$\mu$ が固有値に近いほど $A - \mu I$ は特異に近く、$(A - \mu I)\boldsymbol{y} = \boldsymbol{x}$ の解の前進誤差は大きくなります。それでも算法が壊れないのは、後退安定な解法で求めた $\hat{\boldsymbol{y}}$ が $(A - \mu I + E)\hat{\boldsymbol{y}} = \boldsymbol{x}$（$\|E\|$ は $\|A\|$ の単位丸め倍程度）の厳密解であり、その誤差の大部分が、まさに求めたい固有ベクトルの方向にそろうからです。方向だけが問題の逆反復にとって、その方向の誤差は無害です。精密な議論は Parlett の前掲書第 4 章、Golub–Van Loan『Matrix Computations』§7.6 を参照してください。
</Remark>

## 6. 同時反復（部分空間反復）

1 本のベクトルの代わりに $p$ 本の正規直交なベクトルを同時に反復し、毎回直交化し直すと、上位 $p$ 個の固有値に対応する不変部分空間が求まります。直交化しないと、$p$ 本すべてが同じ $\boldsymbol{v}_1$ の方向に寄ってしまい、数値的に一次従属になります。

次の定理は記号が多いので、先に役割を整理します。$X$ は固有ベクトルを並べた行列で、その前半 $X_1$（上位 $p$ 個の固有ベクトル）と後半 $X_2$ に分けます。$X^{-1}$ の対応する行を $W_1^{*}, W_2^{*}$ と書くと、$W_1^{*}Z_0$ は初期の $p$ 本が上位 $p$ 個の固有ベクトルの成分をもつかどうかを表す $p$ 次の行列で、これが正則であることが $c_1 \ne 0$ の一般化です。証明の方針は冪乗法と同じで、$A^kZ_0$ を上位の固有ベクトルの部分と残りの部分に分け、残りが比 $|\lambda_{p+1}/\lambda_p|^k$ で小さくなることを示します。

<Definition id="def-subspace-iteration" title="同時反復">
$Z_0 \in \mathbb{C}^{n\times p}$ を正規直交な列をもつ行列とする。$Y_k = AZ_{k-1}$ の列が一次独立である限り、その列に Gram–Schmidt の直交化（<Ref to="mathematics/linear-algebra/inner-product-spaces#thm-gram-schmidt" />）を施して
$$
Y_k = Z_kR_k\qquad(Z_k \text{ は正規直交な列をもち、} R_k \text{ は対角成分が正の上三角行列})
$$
と書き、$Z_k$ を次の反復ベクトルとする。これを**同時反復**（部分空間反復、直交反復）という。$p = 1$ のときは冪乗法である。
</Definition>

Gram–Schmidt の定理の 2（先頭の $j$ 本が張る空間が一致する）と 3（$R_k$ の対角成分 $\boldsymbol{z}_i^{*}\boldsymbol{y}_i$ が正）により、この分解は一意で、$Z_k$ の先頭 $j$ 列の張る空間は $Y_k$ の先頭 $j$ 列の張る空間に等しくなります。実際の計算では Householder 変換（鏡映を順に掛けて列を直交化する方法）による QR 分解を使いますが、張る空間は同じです。

<Theorem id="thm-subspace-iteration" title="同時反復の収束">
$A = X\Lambda X^{-1}$ を対角化可能な行列、$\Lambda = \operatorname{diag}(\lambda_1, \ldots, \lambda_n)$ とし、ある $1 \le p < n$ について
$$
|\lambda_1| \ge \cdots \ge |\lambda_p| > |\lambda_{p+1}| \ge \cdots \ge |\lambda_n|
$$
とする。$X = (X_1\ X_2)$（$X_1$ は $n\times p$）と分け、$X^{-1}$ を $\begin{pmatrix} W_1^{*} \\ W_2^{*} \end{pmatrix}$（$W_1$ は $n\times p$）と分ける。$\mathcal{X}_p = \operatorname{span}X_1$（上位 $p$ 個の固有値の不変部分空間）とし、$G = W_1^{*}Z_0$ が正則であると仮定する。このとき同時反復はすべての $k$ で定義され、$\operatorname{span}Z_k = \operatorname{span}A^kZ_0$ であり、
$$
r = \left|\frac{\lambda_{p+1}}{\lambda_p}\right|,\qquad C = \|W_1\|\,\|X_2\|\,\|W_2^{*}Z_0G^{-1}\|
$$
とおくと、$Cr^k < 1$ のとき
$$
d(\operatorname{span}Z_k, \mathcal{X}_p) \le \frac{Cr^k}{1 - Cr^k}
$$
が成り立つ。
</Theorem>

<Proof of="thm-subspace-iteration">
**準備.** $X^{-1}X = I$ を区分けすると $W_1^{*}X_1 = I_p$、$W_1^{*}X_2 = O$ で、$X^{-1}A = \Lambda X^{-1}$ を区分けすると $W_1^{*}A = \Lambda_1W_1^{*}$ です。ここで $\Lambda_1 = \operatorname{diag}(\lambda_1, \ldots, \lambda_p)$、$\Lambda_2 = \operatorname{diag}(\lambda_{p+1}, \ldots, \lambda_n)$ とおきました。$|\lambda_p| > |\lambda_{p+1}| \ge 0$ から $\Lambda_1$ は正則です。

**反復が定義されること.** $k$ についての帰納法で、$Z_k = A^kZ_0M_k$（$M_k$ は正則な $p$ 次行列）と書けることを示します。$k = 0$ は $M_0 = I$ です。$Z_{k-1} = A^{k-1}Z_0M_{k-1}$ なら $Y_k = A^kZ_0M_{k-1}$ で、
$$
W_1^{*}Y_k = W_1^{*}A^kZ_0M_{k-1} = \Lambda_1^kW_1^{*}Z_0M_{k-1} = \Lambda_1^kGM_{k-1}
$$
は正則です。$Y_k\boldsymbol{c} = \boldsymbol{0}$ なら $W_1^{*}Y_k\boldsymbol{c} = \boldsymbol{0}$ から $\boldsymbol{c} = \boldsymbol{0}$ なので、$Y_k$ の列は一次独立で、Gram–Schmidt の直交化が実行できます。$Y_k = Z_kR_k$ の $R_k$ は正則なので $Z_k = A^kZ_0M_{k-1}R_k^{-1}$ で、$M_k = M_{k-1}R_k^{-1}$ とすればよい。とくに $\operatorname{span}Z_k = \operatorname{span}A^kZ_0$ です。

**隔たりの評価.** $A^k = X\Lambda^kX^{-1}$ より
$$
A^kZ_0 = X_1\Lambda_1^kW_1^{*}Z_0 + X_2\Lambda_2^kW_2^{*}Z_0
$$
で、右から正則な $G^{-1}\Lambda_1^{-k}$ を掛けると
$$
A^kZ_0G^{-1}\Lambda_1^{-k} = X_1 + E_k,\qquad E_k = X_2\Lambda_2^k\,(W_2^{*}Z_0G^{-1})\,\Lambda_1^{-k}
$$
です（$G^{-1}\Lambda_1^{-k}$ は $\Lambda_1^kG$ の逆行列で、$X_1\Lambda_1^kG\,G^{-1}\Lambda_1^{-k} = X_1$）。対角行列のノルムは対角成分の絶対値の最大なので $\|\Lambda_2^k\| = |\lambda_{p+1}|^k$、$\|\Lambda_1^{-k}\| = |\lambda_p|^{-k}$ で、
$$
\|E_k\| \le \|X_2\|\,|\lambda_{p+1}|^k\,\|W_2^{*}Z_0G^{-1}\|\,|\lambda_p|^{-k}, \qquad \|W_1\|\,\|E_k\| \le Cr^k
$$
です。$\operatorname{span}Z_k = \operatorname{span}(X_1 + E_k)$ なので、その零でない元は $\boldsymbol{y} = (X_1 + E_k)\boldsymbol{c}$（$\boldsymbol{c} \ne \boldsymbol{0}$）と書けます。$W_1^{*}X_1 = I_p$ から $\|\boldsymbol{c}\| = \|W_1^{*}X_1\boldsymbol{c}\| \le \|W_1\|\|X_1\boldsymbol{c}\|$ なので（ここで $\|W_1^{*}\| \le \|W_1\|$ を使いました。任意の $\boldsymbol{u}$ について Cauchy–Schwarz の不等式から $\|W_1^{*}\boldsymbol{u}\|^2 = \boldsymbol{u}^{*}W_1(W_1^{*}\boldsymbol{u}) \le \|\boldsymbol{u}\|\,\|W_1\|\,\|W_1^{*}\boldsymbol{u}\|$ で、$W_1^{*}\boldsymbol{u} \ne \boldsymbol{0}$ なら両辺を $\|W_1^{*}\boldsymbol{u}\|$ で割れば従います）
$$
\|\boldsymbol{y}\| \ge \|X_1\boldsymbol{c}\| - \|E_k\boldsymbol{c}\| \ge \Bigl(\frac{1}{\|W_1\|} - \|E_k\|\Bigr)\|\boldsymbol{c}\| > 0
$$
です（$\|W_1\|\|E_k\| \le Cr^k < 1$）。$X_1\boldsymbol{c} \in \mathcal{X}_p$ なので <Ref to="lem-angle" /> の 2 から
$$
\sin\angle(\boldsymbol{y}, \mathcal{X}_p) \le \frac{\|\boldsymbol{y} - X_1\boldsymbol{c}\|}{\|\boldsymbol{y}\|} = \frac{\|E_k\boldsymbol{c}\|}{\|\boldsymbol{y}\|} \le \frac{\|E_k\|}{1/\|W_1\| - \|E_k\|} = \frac{\|W_1\|\|E_k\|}{1 - \|W_1\|\|E_k\|} \le \frac{Cr^k}{1 - Cr^k}
$$
で、$\boldsymbol{y}$ について上限をとれば主張を得ます（$t \mapsto t/(1 - t)$ は増加）。
</Proof>

$p = 1$ とすると、$W_1^{*}$ は左固有ベクトル（$X^{-1}$ の第 1 行）で、$G \ne 0$ は「初期ベクトルが $\boldsymbol{v}_1$ の成分をもつ」という <Ref to="thm-power-method" /> の条件 $c_1 \ne 0$ と同じです。

同時反復の要は、Gram–Schmidt の直交化が先頭の列から順に張る空間を保つことです。このため、先頭の $j$ 列だけを見ると、それ自体が $j$ 本の同時反復になっています。

<Corollary id="cor-subspace-nested" title="先頭の列の収束">
$A = X\Lambda X^{-1}$ を <Ref to="thm-subspace-iteration" /> と同じく対角化可能とし、固有値は $|\lambda_1| \ge \cdots \ge |\lambda_n|$ と並んでいるとする。$Z_0 \in \mathbb{C}^{n\times p}$（$1 \le p \le n$）は正規直交な列をもち、同時反復がすべての $k$ で定義されるとする（たとえば $A$ が正則なら $AZ_{k-1}$ の列はつねに一次独立）。$1 \le j \le p$、$j < n$ について $|\lambda_j| > |\lambda_{j+1}|$ を仮定し、$Z_0$ の先頭 $j$ 列を $Z_0^{(j)}$、$X^{-1}$ の先頭 $j$ 行を $(W_1^{(j)})^{*}$ と書いて、$(W_1^{(j)})^{*}Z_0^{(j)}$ が正則とする。このとき $Z_k$ の先頭 $j$ 列 $Z_k^{(j)}$ は、$Z_0^{(j)}$ から始めた同時反復の $k$ 回目と一致し、その張る空間は $\mathcal{X}_j = \operatorname{span}\{\boldsymbol{x}_1, \ldots, \boldsymbol{x}_j\}$（$X$ の先頭 $j$ 列）に $O(|\lambda_{j+1}/\lambda_j|^k)$ で近づく。
</Corollary>

<Proof of="cor-subspace-nested">
$k$ についての帰納法で、$Z_k^{(j)}$ が $Z_0^{(j)}$ から始めた同時反復の $k$ 回目 $\tilde{Z}_k$ に一致することを示します。$Z_{k-1}^{(j)} = \tilde{Z}_{k-1}$ なら、$Y_k = AZ_{k-1}$ の先頭 $j$ 列は $\tilde{Y}_k = A\tilde{Z}_{k-1}$ です。Gram–Schmidt の直交化の漸化式（<Ref to="mathematics/linear-algebra/inner-product-spaces#thm-gram-schmidt" />）は第 $i$ 列を作るのに第 $i$ 列までしか使わないので、$Y_k$ を直交化した結果の先頭 $j$ 列は $\tilde{Y}_k$ を直交化した結果に一致し、$Z_k^{(j)} = \tilde{Z}_k$ です（$\tilde{Y}_k$ は $Y_k$ の先頭 $j$ 列なので、その列は一次独立です）。あとは $p$ を $j$ に置き換えた <Ref to="thm-subspace-iteration" /> を $\tilde{Z}_k$ に使えば、隔たりは $O(|\lambda_{j+1}/\lambda_j|^k)$ です。
</Proof>

したがって $|\lambda_1| > |\lambda_2| > \cdots > |\lambda_p| > |\lambda_{p+1}|$ なら、$Z_k$ の第 1 列は $\boldsymbol{x}_1$ の方向に、先頭 2 列は $\operatorname{span}\{\boldsymbol{x}_1, \boldsymbol{x}_2\}$ に、… と、入れ子になった不変部分空間の列がそれぞれの比の速さで同時に求まります。$p = n$ としたものを行列の相似変換の言葉で書き直したのが QR 法で、その収束の解析は QR 法の章でこの系をもとに行います。

## 7. 残差による事後評価

反復を止めたとき、手元にあるのは近似固有対 $(\mu, \boldsymbol{x})$ です。真の固有ベクトルは分からないので、角 $\theta$ そのものは測れません。測れるのは残差です。

<Proposition id="prop-rayleigh-residual" title="Rayleigh 商は残差を最小にする">
$A \in \mathbb{C}^{n\times n}$、$\|\boldsymbol{x}\| = 1$ とし、$\boldsymbol{r} = A\boldsymbol{x} - R_A(\boldsymbol{x})\boldsymbol{x}$ とおく。このとき $\boldsymbol{x}^{*}\boldsymbol{r} = 0$、$\|\boldsymbol{r}\|^2 = \|A\boldsymbol{x}\|^2 - |R_A(\boldsymbol{x})|^2$ であり、任意の $\mu \in \mathbb{C}$ について
$$
\|A\boldsymbol{x} - \mu\boldsymbol{x}\|^2 = \|\boldsymbol{r}\|^2 + |R_A(\boldsymbol{x}) - \mu|^2 .
$$
とくに $\mu \mapsto \|A\boldsymbol{x} - \mu\boldsymbol{x}\|$ は $\mu = R_A(\boldsymbol{x})$ でだけ最小になる。
</Proposition>

<Proof of="prop-rayleigh-residual">
$R = R_A(\boldsymbol{x}) = \boldsymbol{x}^{*}A\boldsymbol{x}$ とおくと $\boldsymbol{x}^{*}\boldsymbol{r} = \boldsymbol{x}^{*}A\boldsymbol{x} - R\,\boldsymbol{x}^{*}\boldsymbol{x} = 0$ です。$A\boldsymbol{x} - \mu\boldsymbol{x} = \boldsymbol{r} + (R - \mu)\boldsymbol{x}$ の 2 項は直交するので、ノルムの 2 乗は $\|\boldsymbol{r}\|^2 + |R - \mu|^2$ です。$\mu = 0$ とおけば $\|A\boldsymbol{x}\|^2 = \|\boldsymbol{r}\|^2 + |R|^2$ を得ます。
</Proof>

<Corollary id="cor-residual-eigen" title="実対称行列の残差評価">
$A$ を実対称行列、$\boldsymbol{x} \in \mathbb{R}^n$ を単位ベクトル、$\boldsymbol{r} = A\boldsymbol{x} - R_A(\boldsymbol{x})\boldsymbol{x}$ とする。このとき $|\lambda - R_A(\boldsymbol{x})| \le \|\boldsymbol{r}\|$ を満たす $A$ の固有値 $\lambda$ がある。$\|\boldsymbol{r}\|$ は、すべての実数 $\mu$ についての残差 $\|A\boldsymbol{x} - \mu\boldsymbol{x}\|$ の中で最小である。
</Corollary>

<Proof of="cor-residual-eigen">
$A$ は実対称なので $R_A(\boldsymbol{x})$ は実数で、残差による固有値の評価（<Ref to="mathematics/computer-assisted-proofs/certified-linear-algebra#thm-residual-bound" />）を $\mu = R_A(\boldsymbol{x})$ に使えば前半です。後半は <Ref to="prop-rayleigh-residual" /> です。
</Proof>

一般の行列では、残差が小さくても固有値が近いとは限りません。差を測るのは固有ベクトル行列の[条件数](/mathematics/numerical-linear-algebra/norms-and-conditioning#def-condition-number)です。

<Proposition id="prop-residual-bauer-fike" title="対角化可能な行列の残差評価">
$A = V\Lambda V^{-1}$ を対角化可能な行列とし、$\kappa(V) = \|V\|\|V^{-1}\|$ とおく。$\|\boldsymbol{x}\| = 1$、$\mu \in \mathbb{C}$、$\boldsymbol{r} = A\boldsymbol{x} - \mu\boldsymbol{x}$ ならば、$\min_i|\lambda_i - \mu| \le \kappa(V)\|\boldsymbol{r}\|$ である。
</Proposition>

<Proof of="prop-residual-bauer-fike">
$E = -\boldsymbol{r}\boldsymbol{x}^{*}$ とおくと $(A + E)\boldsymbol{x} = A\boldsymbol{x} - \boldsymbol{r}(\boldsymbol{x}^{*}\boldsymbol{x}) = \mu\boldsymbol{x}$ なので、$\mu$ は $A + E$ の固有値です。任意の $\boldsymbol{y}$ について Cauchy–Schwarz の不等式（<Ref to="mathematics/linear-algebra/inner-product-spaces#thm-cauchy-schwarz" />）から $\|E\boldsymbol{y}\| = |\boldsymbol{x}^{*}\boldsymbol{y}|\|\boldsymbol{r}\| \le \|\boldsymbol{r}\|\|\boldsymbol{y}\|$ なので $\|E\| \le \|\boldsymbol{r}\|$ です。Bauer–Fike の定理（<Ref to="mathematics/computer-assisted-proofs/certified-linear-algebra#thm-bauer-fike" />）から $\min_i|\mu - \lambda_i| \le \kappa(V)\|E\| \le \kappa(V)\|\boldsymbol{r}\|$ です。
</Proof>

Hermite 行列では $V$ をユニタリにとれて $\kappa(V) = 1$ なので、<Ref to="prop-residual-bauer-fike" /> は <Ref to="cor-residual-eigen" /> の複素版になっています。$\|\boldsymbol{r}\|$ の評価は 1 次ですが、固有値の隔たりについての情報が加われば 2 次に改善できます。その代表が Temple の不等式です。

<Example id="ex-temple-use" title="Rayleigh 商反復 1 回のあとの包み込み">
§5 のコードの $6$ 次の三重対角行列で、$\boldsymbol{x}_0 = (1, \ldots, 1)^{\mathsf{T}}/\sqrt{6}$ から Rayleigh 商反復を 1 回行うと（mpmath 30 桁で計算）、$\eta = R_A(\boldsymbol{x}_1) \approx 0.199503$、$\|\boldsymbol{r}\| \approx 0.0457$ です。

- <Ref to="cor-residual-eigen" /> からは、区間 $[\eta - \|\boldsymbol{r}\|, \eta + \|\boldsymbol{r}\|] \approx [0.154, 0.245]$ に固有値があることが分かります。
- 最小の固有値を $\lambda_1$、2 番目に小さい固有値を $\lambda_2$ とします。$\lambda_2 \ge 0.75$ が分かっていれば（ここでは閉じた形 $2 - 2\cos(2\pi/7) \approx 0.75302$ から。実際の計算では Sturm 列の数え上げなどで確かめます）、Temple の不等式（<Ref to="mathematics/computer-assisted-proofs/eigenvalue-enclosures#thm-temple" />）を $\nu = 0.75$ で使えます。<Ref to="prop-rayleigh-residual" /> から Temple の不等式の $\sigma^2 = \|A\boldsymbol{x}\|^2 - \eta^2$ は $\|\boldsymbol{r}\|^2 \approx 0.00209$ に等しく、$\lambda_1 \ge \eta - \|\boldsymbol{r}\|^2/(\nu - \eta) \approx 0.195712$ です。
- 上からは Rayleigh 商そのものが $\lambda_1 \le \eta$ を与えます（<Ref to="mathematics/linear-algebra/spectral-theorem#thm-rayleigh" />）。

こうして $\lambda_1 \in [0.19571, 0.19951]$ と、残差だけの評価より約 24 倍狭い区間に包めます。真の値は $2 - 2\cos(\pi/7) \approx 0.198062$ です。Temple の評価の幅 $\|\boldsymbol{r}\|^2/(\nu - \eta)$ は残差の 2 乗に比例するので、反復をもう 1 回進めれば幅は桁違いに縮みます。
</Example>

<Remark id="rem-deflation" title="2 番目以降の固有値：デフレーション">
冪乗法で $(\lambda_1, \boldsymbol{v}_1)$ が求まったあと次の固有値を求めるには、$\lambda_1$ を取り除いた行列に冪乗法を使います。Hermite 行列なら $A - \lambda_1\boldsymbol{v}_1\boldsymbol{v}_1^{*}$（Hotelling のデフレーション）の固有値は $0, \lambda_2, \ldots, \lambda_n$ です。一般の行列では $A - \boldsymbol{v}_1\boldsymbol{w}^{*}$（$\boldsymbol{w}^{*}\boldsymbol{v}_1 = \lambda_1$）とする Wielandt のデフレーションがあります。ただし $\boldsymbol{v}_1$ の誤差が次の固有値に持ち越されるので、多くの固有値が要るときは本章の同時反復や、Krylov 部分空間法の章の Lanczos 法を使うのが普通です。Saad『Numerical Methods for Large Eigenvalue Problems』第 4 章を参照してください。
</Remark>

## 8. 演習

<Exercise id="exr-iteration-count" difficulty="易">
実対称行列で、絶対値最大の固有値と 2 番目の固有値の比が $|\lambda_2/\lambda_1| = 0.9$、初期ベクトルの角が $\tan\angle(\boldsymbol{x}_0, \boldsymbol{u}_1) = 1$ であるとする。冪乗法の Rayleigh 商の誤差を $(\lambda_{\max} - \lambda_{\min}) \times 10^{-10}$ 以下にするには、<Ref to="cor-power-rayleigh" /> の評価で何回の反復が十分か。固有ベクトルの角の正接を $10^{-10}$ 以下にする回数とも比べよ。
<Solution>
<Ref to="cor-power-rayleigh" /> より $|\mu_k - \lambda_1| \le (\lambda_{\max} - \lambda_{\min})\,0.81^k$ なので、$0.81^k \le 10^{-10}$、すなわち $k \ge 10/\log_{10}(1/0.81) \approx 10/0.0915 \approx 109.3$ から $k = 110$ 回で十分です。角の正接は $\tan\angle(\boldsymbol{x}_k, \boldsymbol{u}_1) \le 0.9^k$ なので $k \ge 10/\log_{10}(1/0.9) \approx 218.5$、つまり 219 回が必要です。固有値は固有ベクトルの約半分の回数で同じ桁数に達します。
</Solution>
</Exercise>

<Exercise id="exr-optimal-shift" difficulty="標準">
実対称行列の固有値が $1, 2, \ldots, 10$ であるとする。$A - \sigma I$（$\sigma$ は実数）に冪乗法を使って固有値 $10$ を求めるとき、収束率 $\max_{i\le9}|i - \sigma|/|10 - \sigma|$ を最小にする $\sigma$ と、そのときの収束率を求めよ。シフトなし（$\sigma = 0$）の場合と比べて、同じ精度に要する反復回数は何倍になるか。
<Solution>
$\sigma < 10$ の範囲で考えます（$\sigma$ が $10$ に近すぎると固有値 $1$ の側より $10$ の側が小さくなり、絶対値最大でなくなる）。$i \le 9$ について $|i - \sigma|$ の最大は $\max(|9 - \sigma|, |1 - \sigma|)$ で、これは $\sigma = 5$ で最小値 $4$ をとります。収束率 $f(\sigma) = \max(|9 - \sigma|, |1 - \sigma|)/(10 - \sigma)$ は、$\sigma \le 5$ では $(9 - \sigma)/(10 - \sigma) = 1 - 1/(10 - \sigma)$ で $\sigma$ について減少、$5 \le \sigma < 10$ では $(\sigma - 1)/(10 - \sigma)$ で増加なので、最小は $\sigma = 5$ の $4/5 = 0.8$ です。シフトなしでは $0.9$ なので、反復回数の比は $\log 0.9/\log 0.8 \approx 0.472$、つまり約半分で済みます。
</Solution>
</Exercise>

<Exercise id="exr-rqi-2x2" difficulty="標準">
$A = \operatorname{diag}(a, b)$（$a \ne b$ は実数）と単位ベクトル $\boldsymbol{x} = (\cos\theta, \sin\theta)^{\mathsf{T}}$（$0 < \theta < \pi/2$）について、Rayleigh 商反復を 1 回行ったあとのベクトルと $\boldsymbol{e}_1$ のなす角 $\theta'$ が $\tan\theta' = \tan^3\theta$ を満たすことを示せ（$R_A(\boldsymbol{x})$ が $a, b$ に一致しない場合）。<Ref to="thm-rqi-cubic" /> の評価の係数 $2\Delta/\delta$ と比べると、この場合の係数は何か。
<Solution>
$\mu = a\cos^2\theta + b\sin^2\theta$ なので $a - \mu = (a - b)\sin^2\theta$、$b - \mu = -(a - b)\cos^2\theta$ です。よって
$$
(A - \mu I)^{-1}\boldsymbol{x} = \frac{1}{a - b}\left(\frac{\cos\theta}{\sin^2\theta},\ -\frac{\sin\theta}{\cos^2\theta}\right)^{\mathsf{T}}
$$
で、<Ref to="lem-angle" /> の 4 から $\tan\theta' = \dfrac{\sin\theta/\cos^2\theta}{\cos\theta/\sin^2\theta} = \dfrac{\sin^3\theta}{\cos^3\theta} = \tan^3\theta$ です。係数は $1$ で、定理の係数 $2\Delta/\delta = 2$（$2$ 次では $\Delta = \delta = |a - b|$）より小さく、定理の評価と矛盾しません。2 次の場合は誤差がちょうど 3 乗になり、正しい桁数がきっかり 3 倍になります。
</Solution>
</Exercise>

## 参考文献

- G. H. Golub, C. F. Van Loan『Matrix Computations』4th ed., Johns Hopkins University Press, 2013 — §7.3（冪乗法・同時反復）、§7.6（逆反復）、§8.2（対称行列の冪乗法と Rayleigh 商反復）。
- B. N. Parlett『The Symmetric Eigenvalue Problem』SIAM, 1998 — 第 4 章（冪乗法・逆反復・Rayleigh 商反復）、第 14 章（部分空間反復）。
- L. N. Trefethen, D. Bau III『Numerical Linear Algebra』SIAM, 1997 — Lecture 27（Rayleigh 商・逆反復）、Lecture 28（同時反復から QR 法へ）。
- J. W. Demmel『Applied Numerical Linear Algebra』SIAM, 1997 — 第 4 章（非対称固有値問題の反復）、第 5 章（対称固有値問題）。
- Y. Saad『Numerical Methods for Large Eigenvalue Problems』revised ed., SIAM, 2011 — 第 4 章・第 5 章。
