BioM2 Lab
  • Home
  • Team
  • Research
  • Teaching
  • CoDiFI
  • News

On this page

  • Births, deaths, and where they balance
    • What you are looking at
    • Now the equation
  • Notes and further reading
    • What this simulation leaves out
    • Where to read more

Population Growth

Interactive logistic growth simulator

Births, deaths, and where they balance

Set how fast individuals reproduce and die, decide how much crowding matters, and press Play. The equation comes later — watch the population first.

What you are looking at

The curve is the population over fifty years — the familiar S-shape, levelling off somewhere, but not smoothly: the birth and death rates are re-drawn every year, because a good year and a bad year are different years to be alive in. Drag the slider under it to move through time.

The grey band marks a size you can try to aim the population at; it turns green when you land inside it. Where to put it, how variable the years are, and how badly the counting is done are all under additional parameters.

The two bars are the part the curve cannot show you: the total births and deaths per year at whichever moment you are parked on. The gap between their ends is how fast the population is changing. Drag from year zero to the end and watch the birth bar start far ahead, the two converge, and finally sit equal and both still long.

The square is those same individuals, one dot each: green born this year, red died this year, black came through it alive. Where the dots sit means nothing — the square is a tally, not a map. What matters is that once the population levels off, green and red keep appearing in equal numbers. A population that has stopped growing has not stopped. It is replacing itself as fast as it can, and the panel tells you how many individuals a year that takes.

Now the equation

Two straight lines are hiding in those sliders. The birth rate falls as it gets crowded and the death rate climbs:

b(N) = b₀ − βN and d(N) = d₀ + δN

A population grows at the rate its individuals reproduce, minus the rate they die, so dN/dt = [b(N) − d(N)] N. Substitute the two lines, collect the terms, and out falls the equation from lecture:

dN/dt = r N (1 − N/K) with r = b₀ − d₀ and K = (b₀ − d₀) / (β + δ)

Neither r nor K is a slider on this page, because neither is a thing an organism has. r is the growth rate an individual manages with nobody in the way. K is the population size at which the two rate lines cross — where a typical individual has exactly as many offspring as it has chances of dying.

Below, those theoretical values sit next to the empirical ones: what somebody counting this population once a year for fifty years would report, knowing nothing about the rates you set. The two do not match exactly, and that is not a mistake in either. The theoretical numbers describe what an average year does. The empirical ones describe the single history this population actually had — one particular run of good and bad years, seen through one particular set of counts.

Things to try

  • Park the slider at the far right and look at the two bars. They are equal, and neither is anywhere near zero. Then read “turnover at K”: that many individuals are born and die every year, forever, with the total never moving.
  • Compare two populations with the same K. Set b₀ = 0.12, d₀ = 0.02, δ = 0.25, then b₀ = 1.40, d₀ = 0.60, δ = 2.00. Both work out at K = 400 — though the slow one is still climbing towards it at year fifty, which is worth noticing on its own. Now check the mean lifespan: 8.3 years in the first, about eight months in the second. One is a population of trees, the other of voles, and the square shows it: a thin sprinkle of green and red in the first, most of the field turning over in the second. The same carrying capacity says almost nothing about the lives inside it.
  • Turn the crowding slider δ down to zero. K is gone, and the readout says why: with nothing multiplying the bracket, dN/dt = rN is the exponential, and no population obeys that for long.
  • Set d₀ above b₀. Deaths win even in an empty landscape, so there is no positive equilibrium to find at any density. Watch the square: red every year, green almost never.
  • Start above your carrying capacity — leave the rates alone and drag N₀ up to
    1. The population falls to the same place it used to climb to. K is not a ceiling that stops growth; it is the level both directions run towards. Above it the death bar is the longer one.
  • Trade δ for β, keeping their sum fixed. The curve does not move at all — crowding that suppresses births and crowding that raises deaths give identical trajectories. To find out which one is happening you have to go and measure births and deaths separately, not just count individuals.
  • Press “New census” a few times, then “New history” a few times. They are not the same thing. A new census re-counts the same population: the curve does not move at all, only the dots scattered around it. A new history re-runs the years themselves, and the population goes somewhere genuinely different. Under additional parameters you can turn each source of chance up on its own to see which is which.
  • Set year-to-year variation to zero. The curve goes glassy-smooth and the square settles into a perfectly steady flicker. Nothing in nature looks like this, which is worth a moment’s thought about every textbook figure of this equation you have ever seen.

Notes and further reading

What this simulation leaves out

Every individual is identical. There are no ages, no sexes, no juveniles too young to breed and no elders past breeding; b₀ and d₀ apply to everyone equally. Real populations have age structure, and it makes them lag: a population that has just been harvested keeps declining for years afterwards because the breeding adults are gone. Nothing here has that memory.

The response to crowding is instantaneous and it is a straight line. Both are choices. Add a delay and the population overshoots K and oscillates around it, which is what deer irruptions and lemming cycles look like; make crowding non-linear and the shape of the curve changes. The logistic is the simplest thing that stops growing, not the most realistic one.

There is no explicit space or other resources. No territories, no dispersal, no refuges — and no food, water, light or nutrients either. “Crowding” is a single number standing in for every one of them at once, which means you cannot ask this model what the population ran out of, or where. That is a real limitation rather than a technicality: a carrying capacity is set by some particular resource running short in some particular place, and reducing all of it to one coefficient is what lets the algebra above stay so simple. It is also why the dots in the square drift about at random and their positions carry no information — the square counts individuals, it does not place them. In a real landscape the crowding an individual felt would depend on its neighbours rather than on the total, and none of this would hold.

Where to read more

  • Gotelli, N.J. (2008). A Primer of Ecology, 4th ed., chs. 1–2. Sinauer. The clearest short treatment of this model, including the birth-and-death derivation used here.
  • Verhulst, P.-F. (1838). Notice sur la loi que la population suit dans son accroissement. Correspondance Mathématique et Physique 10:113–121. Where the equation first appeared.
 

© 2026 BioM2 Lab · Built with Quarto