CotM
← archive

From exponential growth to the logistic curve

Physicspost2026-07-06

A single population grows without bound, predators can only cage it into a boom-and-bust cycle, and the honest fix is a population that limits itself: the S-curve.

Start with one population and the most optimistic thing you can say about it: every member makes new members at a steady clip and nobody ever dies. Then the more of them there are, the faster the whole thing climbs, which written down is just

x˙=rx,\dot{x} = r x,

and the answer is the exponential x0ertx_0 e^{rt}, a number that doubles and doubles and never lets up. Bacteria in a fresh dish do this for an afternoon, money at a fixed interest rate does it forever on paper, and neither one is telling the truth for long, because something always gives. The dish runs out of sugar. So the real question in population biology was never how things grow. It’s what makes them stop.

One answer is that something eats them. Lotka and Volterra wrote down the simplest version of that back in the 1920s: let the prey xx breed on their own at rate α\alpha, and get eaten at a rate that depends on how often predator runs into prey, which is proportional to the product xyxy. The predators yy do the opposite, starving off on their own at rate γ\gamma but gaining whenever they catch something.

x˙=αxβxy,y˙=δxyγy.\dot{x} = \alpha x - \beta x y, \qquad \dot{y} = \delta x y - \gamma y.

Now there are two numbers to track, prey and predators, so we’re back to a plane, and the flow on that plane is worth looking at.

interactive · predator and prey in phase spaceopen ↗

The whole picture is closed loops going around a center, and each loop is a boom and a bust. Follow one around. Prey are plentiful, so the predators feast and multiply. Now there are too many predators, and they eat the prey down faster than it can breed. The prey crashes, the predators are left with nothing and starve, and once they’ve thinned out the prey creeps back up and the whole thing starts over. The two peaks chase each other around the loop, predators always lagging a quarter turn behind the prey they live on. This isn’t a story, it’s in the data. The old Hudson’s Bay Company fur records of hare and lynx pelts swing up and down in exactly this locked, lagging rhythm.

The dot in the middle, at (γ/δ, α/β)(\gamma/\delta,\ \alpha/\beta), is the one balance point where births and deaths cancel for both species and nothing changes. But look at how the flow treats it. Nothing spirals in. It’s a center, not a sink, so if you nudge the system off that point it doesn’t come back, it just circles a slightly bigger loop forever. Predators cap the prey, but only by dragging both of them around this endless cycle. Nobody settles down.

Predators are an outside fix, though. A population will cap itself even with nothing hunting it, just by getting in its own way, competing for the same food and space. That’s the idea Verhulst had in the 1840s, and it’s the cheapest possible brake. Take the runaway exponential and multiply it by the fraction of room still left, (1x/K)(1 - x/K), where KK is the carrying capacity, the crowd the place can actually feed:

x˙=rx(1xK).\dot{x} = r x\left(1 - \frac{x}{K}\right).

When xx is small the bracket is nearly one and the population grows almost exponentially, same as before. As xx climbs toward KK the bracket closes toward zero and the growth throttles itself down. Push past KK and the bracket goes negative and the population falls back. There’s no predator, no second number, just how many there are, so the phase space collapses back onto a single line.

interactive · the logistic equation as a flow on a lineopen ↗

The streaks are really all riding on the one horizontal line through the middle. I fanned them out vertically so you can see them, but the only thing moving is their left-to-right position. The curve arching over the top is x˙\dot{x} itself, the growth rate against how many there are, and it’s an upside-down parabola. Where it crosses zero the flow stops, and those two crossings are the only fixed points the thing has. The red one at x=0x = 0 is extinction, and it’s unstable, because empty the dish almost all the way and the last few multiply and walk away from zero. The blue one at x=Kx = K is the full dish, stable, with everything on both sides sliding into it. Start below carrying capacity and you rise to it, start above and you fall to it, and either way the trajectory is the same lazy S, quick through the middle where the parabola is tallest, slow at both ends, easing into KK and staying.

That S-curve is the honest one. The pure exponential was a population that never stops, which nothing does. The predator-prey loops never settle either, and they cost you a whole second species to draw. The logistic gets you the realistic shape, growth that starts fast and then bends over and levels off, out of a single number and one extra term. It’s what actual penned-in populations trace out, reindeer dropped on an island, yeast in a vat of wort, a bloom filling a pond. They don’t rocket to infinity and they don’t oscillate forever. They fill the space they’ve got and stop.

There’s a sting in the tail worth mentioning. Chop time into discrete steps instead of letting it run smoothly, so the population jumps from this year’s count straight to next year’s, and the same tidy equation becomes the logistic map, one of the most famous objects in all of chaos. Same brake, same carrying capacity, but now it can overshoot and correct and overshoot again, and as you turn up rr it goes from settling calmly, to flipping between two values, to four, to eight, and then into noise that never repeats. The smooth version can’t do any of that. A flow on a line has nowhere to oscillate. To circle back you need a second dimension, the plane the predators and prey were living on, and to truly come apart you need to cut time itself into steps or climb to a third dimension. The equations are barely more than arithmetic. It’s the room they run in that decides what they can do.