Finding the eigenvalues of a large matrix or linear operator by computing its characteristic polynomial is numerically unworkable: the roots of a degree- polynomial are exponentially sensitive to small coefficient perturbations, and no closed-form root formula exists once . The power method avoids the polynomial entirely. Introduced in essentially its modern form by Müntz (1913) and von Mises and Pollaczek-Geiringer (1929), and analyzed rigorously alongside its shifted and inverse variants throughout the mid-20th century (Wilkinson, The Algebraic Eigenvalue Problem, 1965), it remains, in the guise of one power iteration per step, the engine inside PageRank, spectral clustering, and the Lanczos/Arnoldi methods used to find eigenpairs of matrices too large to diagonalize directly.
Let be a finite-dimensional inner product space over , with inner product and norm , and let be a self-adjoint (symmetric) linear operator: for all . The spectral theorem for finite-dimensional self-adjoint operators gives an orthonormal basis of () consisting of eigenvectors of , with real eigenvalues satisfying .
Call dominant if for every — it is then the unique eigenvalue of largest magnitude. Given a starting vector with coordinates in the eigenbasis, the power iterates are for , and the Rayleigh quotient of at a nonzero vector is
which recovers exactly when is the eigenvector .
Rewriting the -th power iterate in the eigenbasis: applying times raises each coordinate's eigenvalue factor to the -th power, since acts diagonally on the eigenbasis. This is the algebraic core the rest of the argument rescales and takes limits of.
Given a dominant eigenvalue and , dividing the expansion above by leaves the -th term fixed at while every other term is multiplied by , since for . This is the precise sense in which the power iterates "align" with the dominant eigenvector.
The practical output of the power method: the Rayleigh quotient of the (unrescaled) iterates converges to the dominant eigenvalue itself, giving a numerically computable estimator that needs no knowledge of in advance. This is the weakest statement that captures "the power method converges to the dominant eigenvalue" without hard-coding a convergence rate, so it is the mission's goal.
The power method is the template every practical large-scale eigenvalue algorithm departs from:
shifted inverse iteration, Rayleigh quotient iteration (with locally cubic convergence), the
QR algorithm, and Krylov subspace methods (Lanczos, Arnoldi) all begin from the same
diagonal-power argument formalized here, then add a trick — a shift, a change of subspace, an
orthogonalization step — to accelerate or extend it. The result itself is classical and
completely settled mathematically; there is no open question in the convergence theory of the
basic power method under the dominant-eigenvalue hypothesis used here. What this mission
contributes is a machine-checked version of that classical argument built directly on
Mathlib's existing finite-dimensional spectral theorem
(LinearMap.IsSymmetric.eigenvalues/eigenvectorBasis) — as of this writing, Mathlib's
InnerProductSpace/Spectrum.lean and Rayleigh.lean files contain the spectral decomposition
itself, and a Rayleigh quotient for ContinuousLinearMap, but not this convergence statement.
The obvious first attempt is to bound by a naive
sum of norms and take limits termwise; this works for the rescaled sequence (Milestone 2) but
does not by itself give the Rayleigh-quotient limit, because is invariant only under
nonzero scalar rescaling, not under limits taken carelessly — one has to first establish that
the limit vector is nonzero (using ), then invoke continuity of
away from to transport the Tendsto from the rescaled sequence to
. Getting the degenerate case right is the
other trap: with only one eigenvalue, the dominance hypothesis is vacuous, and if that
eigenvalue is allowed to be the rescaling divides by zero and the
rescaled-convergence statement becomes false — the formalization must therefore assume
explicitly rather than deriving it from dominance alone.
The mission works with a general RCLike 𝕜 field (real or complex ), a LinearMap.IsSymmetric
operator on a FiniteDimensional inner product space, and Mathlib's own eigenvalues/
eigenvectorBasis (which already fixes the eigenbasis and a specific, decreasing-by-value
ordering of eigenvalues — the formalization does not re-derive the spectral theorem). Dominance
is stated by magnitude (|\lambda_j| < |\lambda_{i_0}|), not by position in Mathlib's ordering,
since the dominant eigenvalue need not be the largest by value (it could be the most negative).
The starting vector is arbitrary subject to ; no normalization ()
is imposed, since the Rayleigh quotient and the rescaled limit are both scale-invariant/
scale-equivariant. A trivializing formalization is ruled out explicitly: without both
and , the , counterexample above makes the
rescaled-convergence statement false, so these are load-bearing hypotheses, not decoration.
Contributions on the two milestones (the algebraic iterate expansion, and the rescaled-limit
argument) are especially welcome, since they are reusable building blocks for any future mission
on shifted/inverse power iteration or Rayleigh quotient iteration.
import Mathlib
import Definitions.Def_rayleighQuotient
namespace PowerMethod
/-- **The power method converges** (Goal). Let `T` be self-adjoint on a finite-dimensional inner
product space `E`, with eigenvalue `hT.eigenvalues hn i0` strictly dominant in absolute value, and
let the starting vector `x0` have a nonzero component along the corresponding eigenvector. Then the
Rayleigh quotients of the power iterates `T^k x0` converge to the dominant eigenvalue. -/
theorem rayleighQuotient_iterate_tendsto
{𝕜 : Type*} [RCLike 𝕜] {E : Type*} [NormedAddCommGroup E] [InnerProductSpace 𝕜 E]
[FiniteDimensional 𝕜 E] {T : E →ₗ[𝕜] E} (hT : T.IsSymmetric) {n : ℕ}
(hn : Module.finrank 𝕜 E = n) (x0 : E) (i0 : Fin n)
(hdom : ∀ j, j ≠ i0 → |hT.eigenvalues hn j| < |hT.eigenvalues hn i0|)
(hne0 : hT.eigenvalues hn i0 ≠ 0)
(hx0 : (hT.eigenvectorBasis hn).repr x0 i0 ≠ 0) :
Filter.Tendsto (fun k => rayleighQuotient T ((T ^ k) x0)) Filter.atTop
(nhds (hT.eigenvalues hn i0)) := by
sorry
end PowerMethod
Under the same dominance and nonvanishing hypotheses as the rescaled convergence milestone, the Rayleigh quotients R_T(T^k x0) converge to the dominant eigenvalue lambda_{i0} as k -> infinity.
No open leaves. Every sub-goal is proved or awaiting decomposition.