Learning Objectives
By the end of this section you will be able to:
- Recognise when a 2×2 system has a repeated eigenvalue by checking that the discriminant .
- Distinguish the defective case (one eigenvector, improper node) from the non-defective case (, star node) by inspecting .
- Construct the missing second solution using a generalised eigenvector solving .
- Apply the closed-form matrix exponential when is nilpotent.
- Draw the phase portrait of an improper node and explain why trajectories curl into the eigenvector line in forward time.
- Cross-check by hand, by NumPy, by SciPy's general , and by PyTorch's .
Why a Repeated Eigenvalue Is a Problem
In Sections 23.04 and 23.05 you saw the pleasant cases. With two distinct real eigenvalues the system has two linearly independent eigenvectors , and the general solution is the textbook combination
With complex conjugate eigenvalues , the same recipe works after Euler's formula turns the complex exponential into — a damped or growing spiral.
Now collapse the two real eigenvalues into a single number. Try
The characteristic polynomial is , so the only eigenvalue is , repeated. Looking for eigenvectors:
The eigenvector line is the entire kernel. It is one- dimensional, spanned only by .
The trouble
The state space is two-dimensional, but we have found only one linearly independent solution . To match two initial conditions we need two linearly independent solutions. The eigenvalue method, as written, is broken. We need a second solution out of thin air.
Intuition: A Razor's Edge Between Node and Spiral
Before we do the algebra, look at the picture. The classification of 2×2 linear systems lives in the plane:
| Condition on discriminant Δ = τ² − 4·det | Eigenvalues | Phase portrait |
|---|---|---|
| Δ > 0, det > 0, τ < 0 | two distinct negative reals | Stable node — straight-line attractor |
| Δ > 0, det < 0 | one positive, one negative real | Saddle — hyperbolic flow |
| Δ < 0, τ < 0 | complex conjugates with negative real part | Stable spiral |
| Δ = 0 | single repeated real eigenvalue | Improper node (defective) OR star node (non-defective) — this section |
| Δ > 0, det > 0, τ > 0 | two distinct positive reals | Unstable node |
| Δ < 0, τ > 0 | complex conjugates with positive real part | Unstable spiral |
The repeated-eigenvalue case lives exactly on the boundary between “two real eigenvalues” and “two complex eigenvalues”. It is a measure-zero slice of parameter space — a razor's edge. Move a hair into the positive half and the picture is a node with two distinct asymptotic directions. Move a hair into the negative half and you get a spiral that turns through every angle. The repeated- eigenvalue picture has to do both jobs at once: it must look like a node (one direction is asymptotically preferred) and a proto-spiral (every other trajectory has to bend its way into that direction). That bending is exactly the role of the linear-in- term we are about to derive.
A picture-only summary
A real node has two preferred lines. A spiral has none. The improper node has one, and every trajectory eventually flattens onto it. The trajectory does not enter the line tangentially the way a star node does — it slides in parallel, the way a car drifts up to the curb when you turn the wheel.
Where the Missing Second Solution Comes From
Guess a second solution of the form
where is some unknown constant vector and is the eigenvector we already have. Why this guess? Because is the second linearly independent solution of the scalar equation from Chapter 22 — and that is exactly the structure we are now lifting to two dimensions.
Differentiate the guess:
Plug it into :
Match coefficients of on each side. The -coefficient gives , which is just the eigenvalue equation we already used. The constant term gives the new requirement:
That is one linear system in . It has a solution because is in the image of — a fact we can prove algebraically and which we'll feel geometrically in the next subsection.
Why the guess works
The forcing term is exactly the first solution, sitting on the eigenvector line. The system is asked “follow yourself, but shifted by .” The only way to satisfy that without falling onto the eigenvector line is to ride a linearly-growing copy of attached to an offset vector . The extra factor of is the system's response to resonance with its own eigenmode.
The Generalised Eigenvector (the Algebraic Story)
A vector satisfying is called a generalised eigenvector of rank 2. Apply a second time and you get
So lives in the kernel of but not in the kernel of itself. The chain looks like this:
For 2×2 matrices this two-step ladder is the entire Jordan decomposition. The pair is a basis of , and in that basis the matrix takes its Jordan canonical form:
a so-called Jordan block. The off-diagonal is the algebraic fingerprint of the defective case — it is the entry that creates the term in the solution.
Why w always exists
We need to know that the equation , where , has a solution. The algebraic argument is short: is nilpotent (we'll prove this in a moment), so its image equals its kernel for a 2×2 nilpotent of index 2. The eigenvector sits in the kernel, hence in the image — meaning some maps to it under .
The nilpotency of N — Cayley–Hamilton in baby form
A 2×2 matrix with repeated eigenvalue has characteristic polynomial . The Cayley–Hamilton theorem says every matrix satisfies its own characteristic polynomial:
That is the algebraic punchline of the section. Once you know , the power series of telescopes after two terms — and that is where the factor in the matrix exponential comes from.
Two Cases: Defective vs. Non-Defective
Having a repeated eigenvalue does not automatically mean you are stuck with only one eigenvector. The subtlety is the difference between algebraic multiplicity (the multiplicity of as a root of the characteristic polynomial) and geometric multiplicity (the dimension of ).
| Defective (improper node) | Non-defective (star / proper node) | |
|---|---|---|
| Matrix shape | Genuine Jordan block, e.g. [[3,1],[0,3]] | Scalar matrix λI, e.g. [[3,0],[0,3]] |
| N = A − λI | Nonzero, rank 1, N² = 0 | Identically zero |
| Algebraic mult. | 2 | 2 |
| Geometric mult. | 1 | 2 |
| Independent eigenvectors | Just one, v | Every nonzero vector |
| General solution | e^{λt}(c₁ v + c₂(t v + w)) | e^{λt}(c₁ v₁ + c₂ v₂) for any basis |
| Phase portrait | Curves bending into the v-line | Straight rays from origin (star) |
| Common name | Improper / degenerate node | Star node / proper node |
Practically: compute . If , you are in the star case and every direction is preserved. Otherwise has rank 1, you are defective, and you must find a generalised eigenvector.
Almost never non-defective in practice
Real matrices coming from physics are almost surely defective when they have a repeated eigenvalue, because is a single point in the space of all matrices. Floating-point noise from finite-difference discretisations or measurement is enough to perturb a star node into a slightly-defective configuration — or, equally often, to split the repeated eigenvalue into a near-pair.
The Matrix Exponential View
The cleanest, most uniform way to encode every case at once is the matrix exponential:
Decompose . Because commutes with everything,
Now expand as a power series. Because , every term with vanishes:
So
and the trajectory is
Multiplying out gives back the form from before — the two derivations are the same identity in different clothes.
The series picture
For a generic , the series is infinite. For a 2×2 matrix with a repeated eigenvalue it is just two terms. That brevity is what makes the defective case so algebraically clean once you stop fighting it.
What the Phase Portrait Actually Looks Like
Pick a generic initial condition that is not on the eigenvector line. Decompose it as with . Then
Look at the bracket. The component along grows linearly in (because of the ), while the component along stays fixed at . As the v-component dominates, and the unit vector pointing in the direction of tends to . Geometrically: every trajectory asymptotically aligns with the eigenvector line.
Backward in time, the same argument with shows the v-component still wins (its magnitude grows like ), so trajectories also align with the eigenvector line at the other end. The trajectory is two opposite asymptotes glued together by a single bend.
The slogan for an improper node
“Every road eventually merges onto the eigenvector highway.” The merge happens parallel to , not tangentially — because the offset along never changes, it just becomes relatively smaller compared to the growing -component.
Direction of curvature is fixed by the sign of c₂
Initial conditions with bend in one direction; with they bend in the opposite direction. The eigenvector line itself is the trajectory with : it grows or decays straight, with no bending at all.
Worked Example (Step-by-Step)
Solve
Click to expand the full hand calculation
, . Discriminant — repeated eigenvalue confirmed.
.
Check nilpotency: . Confirmed.
: the first row says ; the second row is automatic. So .
gives with free. Pick the simplest: .
, so .
At : . ✓ Differentiate: . Compare with . Identical. ✓
. Notice both components are equal — the trajectory passes through the line at exactly this time, because second component.
. The ratio of components is ; as this ratio diverges and the trajectory aligns with (the x-axis).
The eigenvector line is the x-axis. The trajectory starts at , has constant -component (the y-component stays equal to , scaled but not changing its sign), and the x-component grows like — faster than the y. So the trajectory races off to the right, asymptotically parallel to the x-axis.
Interactive Phase-Portrait Explorer
Click anywhere on the phase plane to place a new initial condition. Drag the matrix entries below — the “snap d” checkbox keeps the discriminant locked to zero so you stay in the repeated- eigenvalue regime as you scrub. Toggle it off and watch the picture de-tune.
Interactive: Walk the Discriminant Through Zero
Here the matrix is and the discriminant is . Sliding through zero takes you through three qualitatively different phase portraits in a single continuous motion.
Computation in Python
The closed-form solver (no ODE integrator needed)
This routine takes and returns the exact trajectory plus a diagnostics dictionary. It handles both the defective and non-defective cases without branching the user-facing API.
Verifying with the matrix exponential
The same trajectory can be computed by exponentiating directly. For a Jordan block this gives the compact closed form — and we cross-check against .
PyTorch View: matrix_exp Handles Every Case
Once you commit to the matrix-exponential picture, there is no longer a special-case branch for repeated eigenvalues. The same line of code works for every regime, on GPUs, batched, and differentiable through the entries of . That is the modern way the recurring building block of linear control theory enters deep learning (Linear Neural ODEs, S4, Mamba state-space models).
Why this matters for ML
A trainable matrix can pass through a defective configuration during training, even if it started generic. The matrix exponential view doesn't care — gradients flow continuously through that razor's edge. Algorithms that branch on “is diagonalisable?” suddenly produce non-differentiable training surfaces and crash.
Where Repeated Eigenvalues Actually Show Up
⚙️ Critically damped mechanical systems
- The mass-spring-damper with sits at the boundary between oscillating and over-damped. The state-space matrix has a single repeated eigenvalue .
- Designers aim for this regime because it is the fastest non-oscillating return to rest — automotive shock absorbers, door-closers, gun recoil mechanisms.
⚡ Critically damped circuits
- Series RLC with has a repeated eigenvalue — the fastest settling of a power-supply transient.
- Audio-amplifier compensation networks, oscilloscope-probe compensation, snubber circuits.
🎯 Control theory
- Pole placement: engineers deliberately assign repeated closed-loop poles to a plant for minimum-time non- overshooting step response.
- State observers (Luenberger) often use repeated eigenvalues for the observer poles to keep the error dynamics tight.
🧠 Machine learning
- S4 and Mamba state-space layers parameterise directly. Repeated eigenvalues are a measure-zero event in the parameter manifold — they are the points where eigendecomposition is discontinuous, so models that work in eigen-basis break.
- The matrix-exponential parameterisation is precisely what makes those models smooth across the defective ridge.
Common Pitfalls
Don't forget the t term
A frequent student mistake in the defective case is to write the general solution as without the piece. That expression is not a solution of — you can check by differentiation that the residual is , which is nonzero unless .
Generalised eigenvector is not unique
Any with is also a valid generalised eigenvector, because . Different choices simply re-parameterise . Pick whatever is cheapest to compute.
np.linalg.eig may split the repeated eigenvalue
Floating-point eigensolvers detect the defective case poorly. Calling returns two distinct “eigenvalues” differing by and two “eigenvectors” that point in nearly the same direction. Trust the trace, not the solver, when you know .
Star node is not improper
If you ever land on , do NOT compute a generalised eigenvector. There is no defective structure to repair: every direction is already an eigenvector, and the trajectories are straight rays. Confusing the two is the most common conceptual error in the section.
Summary
A 2×2 linear system with discriminant has a single repeated eigenvalue . The recipe is:
- Compute . If you are in the non-defective star case — solution is with no further work.
- Otherwise find .
- Solve for a generalised eigenvector .
- Decompose .
- Write , equivalently .
Where it sits in the calculus of dynamical systems
| Δ = τ² − 4·det | Eigenvalues | Section | Picture |
|---|---|---|---|
| > 0 | distinct real | 23.04 | Node / saddle |
| < 0 | complex conjugate | 23.05 | Spiral / centre |
| = 0 (this section) | single repeated real | 23.06 | Improper or star node |
| any | general n × n | 23.07 → | Linearisation around fixed points of nonlinear systems |
Coming next: Real linear systems are an idealisation. Most physical, biological, and economic models are nonlinear. In Section 23.07 we will see that the eigenvalue machinery you just mastered — including the repeated-eigenvalue razor's edge — survives almost intact, because near any equilibrium a nonlinear system looks like a linear one, and the classification of equilibria is decided by the same plane.