Leslie Population Matrix
Project a three-age-class population with fecundity and survival, inspect uncapped counts and age shares, and test extinction and periodic boundaries.
By Riano · Published · Updated · Report a correction
Leslie Population Matrix
A population with many young individuals can behave differently from one with the same total but more reproductive individuals. A Leslie matrix keeps those age classes separate. Each multiplication combines expected offspring with survival into the next age class. This module follows a fictional population in three equal-duration classes; its parameters illustrate the arithmetic rather than estimate any particular species.
What one matrix multiplication means
Write the population at census t as the column vector N(t) = [n1(t), n2(t), n3(t)]T. Each fecundity fi is the expected number of new age-class-1 individuals at the next census per individual now in class i. These are effective census-to-census rates: how reproduction and offspring survival combine depends on the census convention. A survival s1 or s2 is the fraction reaching the next age class over that interval.
n1(t+1) = f1 n1(t) + f2 n2(t) + f3 n3(t)
n2(t+1) = s1 n1(t)
n3(t+1) = s2 n2(t)
N(t+1) = L N(t), so N(t) = Lt N(0).
The fecundities occupy the first row of L, and the survivals sit immediately below its main diagonal. All other entries are zero. The oldest class contributes offspring but is not retained as an adult plus-group. Births need not balance deaths, so L is generally not a stochastic matrix and total population need not stay constant.
Work three generations by hand
Use f = (0, 2, 0.5), s = (0.5, 0.4), and N(0) = (10, 10, 10). At the first step, the new youngest class is 0×10 + 2×10 + 0.5×10 = 25. The other classes contain 0.5×10 = 5 and 0.4×10 = 4 expected individuals.
| Generation | Age class 1 | Age class 2 | Age class 3 | Total |
|---|---|---|---|---|
| 0 | 10 | 10 | 10 | 30 |
| 1 | 25 | 5 | 4 | 34 |
| 2 | 12 | 12.5 | 2 | 26.5 |
| 3 | 26 | 6 | 5 | 37 |
For generation 2, the first entry is 2×5 + 0.5×4 = 12. At generation 3 it becomes 2×12.5 + 0.5×2 = 26. A higher total in one interval does not promise a higher total in the next: 30→34→26.5→37 follows directly from the changing age composition.
The displayed growth factor is total(t) / total(t−1). At generation 3 it is 37/26.5 = 74/53, approximately 1.396226. This is the observed one-step ratio for this trajectory, not an independently calculated dominant eigenvalue. There is no previous interval at generation 0, so the growth factor is Undefined.
Age shares divide each class by the current total. At generation 3 they are 26/37, 6/37 and 5/37. The cards display proportions between 0 and 1; the Age shares (%) plot multiplies those proportions by 100. Neither operation changes the population counts.
An uncapped calculation
Set all fecundities to 5 and both survivals to 1, keeping the initial counts at 10. Generation 6 is (1080250, 180750, 30250), with total 1291250. A plotting scale can expand to fit these values; replacing the first count with a ceiling such as one million would change the model equation. This module changes only the display scale.
Run a fixed-matrix experiment
Open the Leslie Population Matrix interactive module. The controls may scroll within the sidebar on desktop or the panel above the chart on mobile. The history table has its own horizontal scroll so that large counts remain readable.
- Press Reset experiment. Check that Generation is 0, all three initial counts are 10, the total is 30, and the growth factor is Undefined. Press Next once to obtain (25, 5, 4) and total 34.
- Set Generation to 3. Confirm (26, 6, 5) and total 37. Press Previous to return to generation 2: (12, 12.5, 2). Press Next to reproduce generation 3.
- Choose Plot → Age shares (%). Counts remain (26, 6, 5); the shares are 26/37, 6/37 and 5/37. Change Playback speed to 2, press Play, then Pause. Play advances generations; the speed affects waiting time only. Rewind returns to generation 0 with the chosen matrix and initial counts intact.
- Set Fecundity 1, Fecundity 2 and Fecundity 3 to 0. Each edit pauses and starts a new history at generation 0. At generation 3, all counts are 0. Their shares are Undefined because there is no population to divide by.
- Press Reset experiment. Set Fecundity 2 to 0, Fecundity 3 to 2 and Survival 2 to 3 to 1. Keep Fecundity 1 at 0 and Survival 1 to 2 at 0.5. Visit generations 1, 2 and 3: (20, 5, 10), (20, 10, 5), then (10, 10, 10). This repeating example challenges a claim that age shares must always settle.
- Press Reset experiment, set all fecundities to 5 and both survivals to 1, then choose generation 6. Confirm (1080250, 180750, 30250). Switch the plot back to Population counts and compare the ledger with the expanded vertical scale.
- Reset again. Change Initial age 1 and Initial age 2 to 0, leaving Initial age 3 at 10. Generation 3 becomes (5, 0, 1). Set Initial age 3 to 0 too and choose generation 30: extinction remains extinction, with no defined age shares or growth ratio.
- Enter -1 in Initial age 1. The text remains visible with a validation error, and the old chart and results disappear. Replace it with 10 to begin a valid new history at generation 0. Resize the viewport: the selected experiment stays intact. Play stops at generation 30 rather than looping back automatically.
Expected counts, cycles and the limits of the model
Fractional projections such as 12.5 are expected counts, not a claim that an individual animal can be divided. The model uses three equal-duration age classes, fixed nonnegative effective fecundities and fixed survival probabilities in the closed interval [0, 1]. It omits migration, competition, density dependence, environmental randomness, separate sexes and survivors remaining in the oldest class. Changing an input therefore creates a new fixed-matrix experiment rather than splicing different policies into one unexplained curve.
A stable age distribution means that normalized shares approach fixed proportions. Absolute counts can still grow or decline. For a primitive nonnegative matrix and a nonzero nonnegative initial population, Perron–Frobenius theory gives a positive dominant eigenvalue and convergence of the normalized population to its positive eigenvector. Connectivity by itself is insufficient: an irreducible matrix can be periodic.
In the repeating experiment, f = (0, 0, 2) and s = (0.5, 1). Following one individual’s contribution through all three classes multiplies it by 0.5×1×2 = 1, so L3 is the identity matrix. The three unequal age distributions recur instead of converging. With no fecundity, the population disappears after at most three steps; the zero vector has no age shares at all. These legal boundaries are why the module does not label every long run a stable distribution or report an eigenvalue from a finite total-growth ratio.
Initial inputs accept 1–5 decimal digits with value 0–10000; signs, spaces, decimals and exponents are rejected. Leading zeros are retained. Fecundities range from 0 to 5 in steps of 0.1, and survivals from 0 to 1 in steps of 0.05. These are teaching ranges, not fitted biological estimates.
The experiment is limited to 30 generations. The largest row sum is at most 15, so every class is bounded by 10000×1530, safely within finite floating point range. No population ceiling is applied. Arithmetic is still numerical: large integers can exceed exact binary64 integer precision, and decimal inputs are approximate in binary. Cards and tooltips round to six decimal places or scientific notation with six digits after the decimal point; tiny positive values use scientific notation rather than being printed as zero. A display such as 1.2e+8 means 1.2×108. Chart height is a rescaled picture, not an additional population statistic.
Sources for the projection model
- Duke University, Leslie Growth Models, Part 1 explains the age-class state vector, first-row reproduction entries, subdiagonal survival entries and the transition Lx.
- Duke University, Leslie Growth Models, Part 2 distinguishes normalized age distributions from convergence of absolute population counts. Its asymptotic conclusions require dominance conditions and are not applied here to the zero or periodic matrices.
- Gustav Delius, Mathematical Ecology and Epidemiology, Chapter 5, sections 5.1.1–5.1.2, derives effective census fecundities; section 5.1.5 states the irreducible/primitive conditions and includes a semelparous-population exercise. The small numerical experiments above were calculated independently for this module.
For comparison, Markov Chains studies probability redistribution, while Matrix Exponential develops continuous-time matrix evolution. A Leslie step is a discrete birth-and-survival projection and need not preserve the total.
Experience it interactively
Adjust parameters, observe in real time, and build deep intuition with Riano’s interactive Leslie Population Matrix module.
Try Leslie Population Matrix on Riano →