Case Study 2 — The Growth Rate of a Population (Leslie Matrices)
Field: Population biology and demographic economics. Idea in one line: the long-run growth rate of an age-structured population is the dominant eigenvalue of its Leslie matrix, and the stable age distribution is the matching eigenvector.
A question a determinant cannot answer alone
Conservation biologists managing an endangered species, demographers projecting a nation's labor force, and economists modeling capital vintages all face the same question: given how a population reproduces and survives, will it grow or shrink in the long run, and how fast? The answer is not in any single census — populations bounce around year to year as a baby boom ages through the system. The long-run behavior is hidden in the structure of how one year maps to the next, and extracting it is precisely an eigenvalue problem. This case study shows how the characteristic polynomial of a small, very specific matrix answers the growth question exactly, and ties the answer back to the chapter's stochastic-matrix discussion (§24.11) and forward to diagonalization (Chapter 25).
The Leslie matrix
The demographer Patrick Leslie introduced this model in the 1940s. [verify] Split a population into age classes — here three, say juveniles (age 0–1), adults (age 1–2), and elders (age 2–3) — and track the count in each class as a vector $\mathbf{x}_k = (j_k, a_k, e_k)$ at year $k$. Two kinds of numbers drive the dynamics:
- Fecundities $f_0, f_1, f_2$: the average number of new juveniles produced per individual in each age class over one time step.
- Survival rates $s_0, s_1$: the fraction of juveniles who survive to become adults, and of adults who survive to become elders.
These assemble into the Leslie matrix
$$ L = \begin{bmatrix} f_0 & f_1 & f_2 \\ s_0 & 0 & 0 \\ 0 & s_1 & 0 \end{bmatrix} = \begin{bmatrix} 0 & 2 & 3 \\ 0.6 & 0 & 0 \\ 0 & 0.4 & 0 \end{bmatrix}. $$
The top row says next year's juveniles come from this year's reproduction ($0$ from juveniles themselves, $2$ per adult, $3$ per elder). The subdiagonal says $60\%$ of juveniles survive into adulthood and $40\%$ of adults into elderhood. Elders do not survive another step (no entry past them). The whole population update is the single matrix equation
$$ \mathbf{x}_{k+1} = L\,\mathbf{x}_k. $$
This is a discrete dynamical system, the discrete cousin of the spring system in Case Study 1. Applying $L$ repeatedly, the population after $n$ years is $\mathbf{x}_n = L^n \mathbf{x}_0$ — and computing high powers of a matrix is exactly the problem eigenvalues were born to solve.
The dominant eigenvalue is the growth rate
Here is the key theoretical fact, due to the Perron–Frobenius theory of non-negative matrices (Chapter 29 develops it for PageRank). A Leslie matrix with positive fecundities has a single dominant eigenvalue $\lambda_1$ that is real, positive, and strictly larger in magnitude than all the others. That dominant eigenvalue is the long-run annual growth factor:
- if $\lambda_1 > 1$, the population grows geometrically, multiplying by $\lambda_1$ each year in the long run;
- if $\lambda_1 < 1$, it declines toward extinction;
- if $\lambda_1 = 1$, it holds steady (this is the stationary case — note the link to stochastic matrices in §24.11, where $\lambda = 1$ was guaranteed because columns summed to $1$; a Leslie matrix's columns generally do not sum to $1$, so its dominant eigenvalue is free to differ from $1$).
The matching eigenvector $\mathbf{v}_1$ is the stable age distribution: the fixed proportions across age classes that the population settles into, regardless of how it started. Once locked into that shape, the population simply scales by $\lambda_1$ each year without changing its age profile.
Finding the growth rate
We follow the chapter's recipe; the Leslie structure makes the determinant clean. Expand $\det(L - \lambda I)$ along the first row (or any way you like):
$$ L - \lambda I = \begin{bmatrix} -\lambda & 2 & 3 \\ 0.6 & -\lambda & 0 \\ 0 & 0.4 & -\lambda \end{bmatrix}, \qquad p_L(\lambda) = -\lambda^3 + 1.2\,\lambda + 0.72. $$
(The general Leslie cubic is $\lambda^3 - f_0\lambda^2 - f_1 s_0 \lambda - f_2 s_0 s_1 = 0$, up to overall sign; here $f_0 = 0$ kills the $\lambda^2$ term, and $f_1 s_0 = 2(0.6) = 1.2$, $f_2 s_0 s_1 = 3(0.6)(0.4) = 0.72$.) This cubic does not factor over the rationals — its roots are not nice integers, which is exactly the situation §24.4 warned about. The rational-root test finds nothing, so we hand the polynomial to a numerical solver, fulfilling the chapter's lesson that real eigenvalue problems escape pencil factoring.
# Long-run growth rate and stable age distribution of a Leslie population model.
import numpy as np
L = np.array([[0, 2, 3],
[0.6, 0, 0],
[0, 0.4, 0]], dtype=float)
vals, vecs = np.linalg.eig(L)
i = int(np.argmax(vals.real)) # the dominant (largest real) eigenvalue
lam1 = vals[i].real
stable = np.abs(vecs[:, i].real)
stable = stable / stable.sum() # normalize to proportions summing to 1
print("eigenvalues :", np.round(vals, 4))
print("dominant lambda_1 :", round(lam1, 5))
print("stable age dist. :", np.round(stable, 4))
Output:
eigenvalues : [ 1.321 +0.j -0.6605+0.3298j -0.6605-0.3298j]
dominant lambda_1 : 1.321
stable age dist. : [0.6282 0.2854 0.0864]
The dominant eigenvalue is $\lambda_1 \approx 1.321$: the population grows by about 32% per cycle in the long run. The other two eigenvalues form a complex-conjugate pair $-0.66 \pm 0.33i$ (a reminder that real matrices routinely have complex eigenvalues, §24.9), but they are smaller in magnitude — $|{-0.66 \pm 0.33i}| \approx 0.74 < 1.321$ — so their contribution dies out and only the dominant mode survives in the long run. The stable age distribution is roughly $(0.63, 0.29, 0.09)$: at equilibrium, $63\%$ of the population are juveniles, $29\%$ adults, $9\%$ elders.
Watching the dynamics converge
Eigen-theory predicts the population forgets its initial condition and approaches the stable distribution growing at $\lambda_1$. We can simply iterate and watch it happen — start with $100$ juveniles and nobody else, an extremely lopsided start, and apply $L$ many times.
# Iterate the Leslie model; the growth ratio and age proportions should converge.
x = np.array([100.0, 0.0, 0.0]) # start: all juveniles, far from stable
for _ in range(40):
x = L @ x
prev, x = x, L @ x
print("one-step growth ratio:", round(x.sum() / prev.sum(), 5)) # -> 1.321
print("age proportions :", np.round(x / x.sum(), 4)) # -> [0.6282 0.2854 0.0864]
Output:
one-step growth ratio: 1.321
age proportions : [0.6282 0.2854 0.0864]
After enough years the total population multiplies by exactly $1.321$ each step and the age proportions have locked onto $(0.628, 0.285, 0.086)$ — precisely the dominant eigenvalue and its eigenvector. The lopsided start was completely washed out. This is the dominant eigenvalue being the long-run growth rate, demonstrated rather than asserted. (Note: this repeated-multiplication-until-it-settles procedure is power iteration, the algorithm of Chapter 23 and the engine of PageRank in Chapter 29 — finding the dominant eigenvector without ever forming the characteristic polynomial.)
Why eigenvalues, not simulation, are the answer
You might object: if we can just simulate, why bother with eigenvalues? Three reasons, each a theme of this book. First, the eigenvalue is exact and instantaneous — $\lambda_1 = 1.321$ is the growth rate, no waiting for a simulation to converge and no question of how many years is "long run." Second, it explains rather than merely computes — the stable age distribution, the rate of convergence (set by the ratio $|\lambda_2|/|\lambda_1| \approx 0.74/1.32 \approx 0.56$ per step), and the role of the complex pair all fall out of the spectrum, not the simulation. Third, it scales — diagonalization in Chapter 25 will let us write $L^n = PD^nP^{-1}$ and compute the population at year $n$ in closed form, for any $n$, in one step instead of $n$.
The same mathematics reaches well beyond biology. Replace "age classes" with "vintages of capital equipment" and the Leslie matrix becomes a model of an economy's capital stock; its dominant eigenvalue is the balanced-growth rate of classical growth theory. Replace them with "stages of a product's adoption" and it becomes a diffusion model in marketing. In every guise, the question "what is the long-run growth rate of this structured, self-renewing system?" has the same answer: the dominant eigenvalue of its transition matrix — a number this chapter has taught you to find as a root of the characteristic polynomial, and a number Chapter 29 will teach you to find for matrices far too large to factor by hand.