HomeArticlesMathematics

Eigenvalues and Eigenvectors: The Directions a Matrix Refuses to Rotate

Every 2x2 matrix turns the unit circle into an ellipse — and its eigenvectors are exactly the two directions that only stretch, never rotate.

mysimulator teamUpdated June 2026≈ 8 min read▶ Open the simulation

A circle becomes an ellipse

Take the unit circle — every point exactly one unit from the origin — and apply any 2×2 matrix to every point on it. The result is always an ellipse (possibly degenerate into a line, in special cases). This is a genuinely nontrivial geometric fact: an arbitrary linear map could in principle produce all sorts of shapes, but linearity constrains it so tightly that the image of a circle is provably always an ellipse, no matter which matrix you choose. Eigenvalues and eigenvectors are the precise language for describing exactly which ellipse you get.

live demo · a circle transformed into an ellipse along its eigenvectors● LIVE

The directions that refuse to turn

A generic vector, transformed by a matrix, both changes length and changes direction — it rotates as well as stretches. An eigenvector is the special exception: a nonzero direction that the transformation only scales, never rotates off its own line. The scale factor for that particular direction is its eigenvalue:

A · v = λ · v

A = the matrix (the transformation)
v = an eigenvector (nonzero; a direction, not a specific length)
λ = the corresponding eigenvalue (the stretch factor along that direction)

For a general 2×2 matrix there are (generically) exactly two independent eigenvector directions, and — this is the geometric payoff — they are exactly the axes of the ellipse that the transformed unit circle traces out. The eigenvalues are the semi-axis lengths of that ellipse: the long axis has length equal to the larger eigenvalue's absolute value, the short axis the smaller. A point starting on the unit circle along an eigenvector direction lands exactly on the tip of the corresponding ellipse axis; every other point on the circle lands somewhere on the ellipse's curved boundary in between, having been rotated as well as stretched.

Finding them: the characteristic equation

Rearranging Av = λv as (A - λI)v = 0 shows that a nonzero solution v exists only when the matrix A - λI is singular — its determinant must be zero. For a 2×2 matrix this gives a quadratic in λ, the characteristic equation:

A = [[a, b], [c, d]]

det(A - λI) = 0
(a-λ)(d-λ) - bc = 0
λ² - (a+d)·λ + (ad-bc) = 0        i.e.  λ² - trace(A)·λ + det(A) = 0

λ = [ trace(A) ± sqrt( trace(A)² - 4·det(A) ) ] / 2

The two roots of this quadratic are the two eigenvalues, computable from nothing more than the matrix's trace (sum of diagonal entries) and determinant — no need to work with the individual entries once those two numbers are known. Once you have an eigenvalue λ, plugging it back into (A - λI)v = 0 and solving for v gives the corresponding eigenvector direction.

When the discriminant goes negative: rotation wins

The discriminant under the square root, trace(A)² - 4·det(A), can be negative — and when it is, the eigenvalues are a complex-conjugate pair rather than two real numbers. Geometrically this happens exactly when the transformation is dominated by rotation: a pure 90° rotation matrix, for example, has no real eigenvectors at all, because every real vector in the plane genuinely does get rotated — there is no surviving direction to serve as an axis. In this regime the "ellipse traced by the transformed circle" picture still technically applies (a rotation maps the unit circle to itself), but the intuitive story of real stretch axes breaks down, and the complex eigenvalues instead encode the rotation angle and any accompanying scaling.

Symmetric matrices: always real, always perpendicular

One special case matters enormously in practice: if A is symmetric (b = c), the spectral theorem guarantees its eigenvalues are always real and its eigenvectors are always mutually perpendicular, no exceptions. This is exactly the situation in Principal Component Analysis (PCA): the covariance matrix of a dataset is symmetric by construction, so its eigenvectors — the principal components — form a perpendicular set of axes pointing along the directions of greatest and least variance in the data, and the eigenvalues equal the amount of variance captured along each one. It is the same ellipse-and-axes picture as the general 2×2 case, just applied to the spread of a data cloud instead of the unit circle, which is why PCA is often introduced visually as "fit the best ellipse to your data and read off its axes."

Frequently asked questions

What makes a direction an eigenvector?

An eigenvector is a nonzero vector whose direction is unchanged by the transformation — the matrix may stretch or shrink it, and even flip it end to end, but it never rotates it off its own line. Every other vector in the plane, in general, does get rotated by some amount; eigenvectors are the special exceptions that only get scaled.

Why can a 2x2 matrix have complex eigenvalues?

Because the characteristic equation is a quadratic, and a quadratic's roots are complex whenever its discriminant is negative. This happens exactly when the transformation is dominated by rotation rather than stretching — a pure rotation matrix, for instance, has no real eigenvectors at all, since every vector in the real plane does get rotated, with no direction left invariant.

How do eigenvalues relate to Principal Component Analysis?

PCA finds the eigenvectors of a dataset's covariance matrix. Because a covariance matrix is symmetric, its eigenvectors are guaranteed real and mutually perpendicular, and they point along the directions of maximum and minimum variance in the data — the eigenvalues themselves equal the variance captured along each corresponding eigenvector, which is exactly the ellipse-axis picture from a general 2x2 transformation, just applied to a data cloud instead of a circle.

Try it live

Everything above runs in your browser — open Eigenvalues and change the parameters while it is running. Nothing is installed, nothing is uploaded, the whole model lives in one tab.

▶ Open Eigenvalues simulation

What did you find?

Add reproduction steps (optional)