Lesson 9 of 15

Eigenvalue Deflation

Eigenvalue Deflation

Power iteration finds only the dominant eigenvalue. Deflation lets you find all eigenvalues one by one.

Idea

After finding (λ1,v1)(\lambda_1, \mathbf{v}_1), subtract its contribution from AA:

A=Aλ1v1v1TA' = A - \lambda_1 \mathbf{v}_1 \mathbf{v}_1^T

For symmetric AA, AA' has the same eigenvectors as AA but eigenvalue λ1\lambda_1 becomes 0. Applying power iteration to AA' now converges to λ2\lambda_2.

Why This Works

If u\mathbf{u} is an eigenvector of AA with eigenvalue λλ1\lambda \neq \lambda_1:

Au=Auλ1(v1u)v1=λu0=λuA'\mathbf{u} = A\mathbf{u} - \lambda_1 (\mathbf{v}_1 \cdot \mathbf{u})\mathbf{v}_1 = \lambda\mathbf{u} - 0 = \lambda\mathbf{u}

(Since eigenvectors of a symmetric matrix are orthogonal: v1u=0\mathbf{v}_1 \cdot \mathbf{u} = 0.)

Example

A=(6223),eigenvalues: 7,2A = \begin{pmatrix} 6 & 2 \\ 2 & 3 \end{pmatrix}, \quad \text{eigenvalues: } 7, 2

After deflation by λ1=7\lambda_1 = 7, v1=[0.8944, 0.4472]\mathbf{v}_1 = [0.8944,\ 0.4472]:

A=(0.40.80.81.6)dominant eigenvalue=2A' = \begin{pmatrix} 0.4 & -0.8 \\ -0.8 & 1.6 \end{pmatrix} \quad \Rightarrow \quad \text{dominant eigenvalue} = 2

Your Task

Implement deflate(A, lam, v) that removes the (λ,v)(\lambda, \mathbf{v}) component from AA, then use it with power iteration to extract the second eigenvalue.

Python runtime loading...
Loading...
Click "Run" to execute your code.