The Eigen-Dungeons
This is the boss fight of linear algebra, the part textbooks lean on hardest and learners bounce off of fastest. We're going to take the Blender approach — see it before formalizing it — because the formal version was designed by people who already had the intuition.
The Hands-On Version (Open Blender)
If you have Blender (it's free), do this:
- Add a plane. Subdivide it a few times so you can see grid lines.
- Press
SthenXand stretch it along the X axis. - Notice: the X axis stretched, the Y axis didn't. Some directions got bigger; others stayed the same.
You just performed a linear transformation. The X direction was an eigenvector (a direction that gets only scaled, never rotated, by the transformation). The amount it stretched (say, 2×) was the eigenvalue for that eigenvector.
The Definitions, Earned
For a square matrix , an eigenvector and eigenvalue satisfy:
In English: "applying the transformation to the vector just scales by — it doesn't change 's direction." Eigenvectors are the directions that are fixed in orientation under ; eigenvalues tell you how much they get stretched (or shrunk, or flipped if negative).
Why They're the Heartbeat
Most transformations are messy — they rotate and scale and shear all at once. Eigenvectors are the special directions where the mess collapses to just scaling. Find a matrix's eigenvectors, and you've found its skeleton — the axes along which it does its cleanest work.
This skeleton appears everywhere:
- PCA uses eigenvectors of the covariance matrix to find the directions of maximum variance in data.
- PageRank finds the dominant eigenvector of a web-link matrix to score importance.
- Quantum mechanics describes states as eigenvectors of operators; observable values are eigenvalues.
- Spectral clustering uses eigenvectors of graph Laplacians to find clusters.
np.linalg.eig — never by hand past 2×2.
import numpy as np
M = np.array([[3., 0.], [0., 2.]]) vals, vecs = np.linalg.eig(M)
print('eigenvalues =', vals) print('eigenvectors =') print(vecs)
실행 결과: eigenvalues = [3. 2.] eigenvectors = [[1. 0.] [0. 1.]]