Models for Population Dynamics
Numerical simulation almost always runs on continuous models — descriptions built from real-valued quantities that vary smoothly rather than jumping between discrete states. The reason is practical: once a quantity is real-valued and smooth, the whole apparatus of calculus becomes available, and calculus is what lets us write down how fast something is changing and then solve for its behavior over time.
Continuous models split into two classes, separated by a single question — does space matter?
- Space is ignored. The model tracks only how quantities evolve over time. This produces an ordinary differential equation (ODE): every derivative is taken with respect to the one independent variable, time.
- Space is resolved. The model tracks how quantities vary from place to place, not just over time. This produces a partial differential equation (PDE), with derivatives along each spatial direction entering alongside the time derivative.
An epidemic makes the split concrete. If all we care about is how many people are infected as the weeks pass, a headcount-over-time model is enough — and that is an ODE. But if the outbreak’s behavior depends on where it is unfolding — a dense city versus quiet countryside, one region locked down while its neighbor is not — then geography has to enter the model, and we need a PDE. COVID-19 was studied both ways, for exactly this reason.
Population dynamics — the study of how populations grow or decay over time — is the standard example of the ODE side, and the subject of this page. It has a long tradition in both biology and mathematics. A population is, strictly speaking, a count of discrete things: bacteria in a culture, animals in a habitat, people in a country, all of which come in whole numbers. The model nonetheless treats that count as a continuous, real-valued quantity — and that approximation is what buys us calculus. We will see shortly that an honest discrete model and the continuous one agree closely enough that the convenience costs almost nothing.
Two regimes are studied, in order of difficulty. The first is a population in isolation: a single species with no external influences, no interference, no competition imposed from outside — just the population and its own internal growth and decay. The second is coexistence: several species sharing an environment and influencing one another, whether peacefully (mutual benefit) or with hostility (one species preying on another, or two competing for the same resources). This page builds the single-species case first; multiple interacting species come afterward.
The hostile case has, in a sense, already appeared. The arms race of two superpowers introduced earlier is mathematically a two-”species” model — military budgets standing in for headcounts, escalating and restraining one another through the same kind of coupled ODEs — and it returns later on this page as a worked example.
The starting point for everything that follows is the oldest and simplest one-species model, introduced by Thomas Malthus in 1798.
The Malthus model
Malthus’s model is deliberately minimal. It follows a single species and tracks just one quantity: the number of individuals alive at time . It is worth being clear about what is and isn’t. It is the size of the population at the instant , the running headcount — not the number of newcomers, and not a rate of change. Everything the model predicts is the behavior of this one number as time runs.
The model is built from three rates.
For a single species, the birth rate is the number of offspring produced per individual per unit of time, and the death rate is the number of individuals lost per individual per unit of time. Their difference is the growth rate
the net number of individuals gained per individual per unit of time. It is positive when births outpace deaths and negative when deaths win.
A concrete reading: if each rabbit produces on average offspring per day, while rabbits are lost at per rabbit per day, the population grows at per rabbit per day. The crucial word is per rabbit — each rate measures one individual’s worth of reproduction or loss. To get the behavior of the whole population, we still have to multiply by how many individuals are actually there. Malthus’s one modeling assumption is that all three rates are constant — they never drift, no matter how large the population grows or how much time passes.
So picture standing at time with individuals, and ask what the population will be once a small time step has elapsed. The new headcount is the old one plus whatever was gained in between:
Read the change term as a product of three plain quantities: is the net change per individual per unit time, is how many individuals are contributing, and is how long they contribute for. Rate times headcount times elapsed time gives a number of individuals. This is what “growth is proportional to population size and time” means — double the population and the change doubles; double the interval and it doubles again. And note the change term is a count of new individuals, separate from , which is the running total they get added to.
This difference equation only tells us the population at instants spaced a step apart. To get a model that holds at every instant, we shrink that step toward zero, and the relation collapses into a differential equation.
The Malthus model describes a single species with constant growth rate . Its population satisfies the ODE
with initial condition . The solution is the exponential
From the difference equation to the ODE
Start from the difference equation and subtract from both sides, isolating the change on its own:
Divide both sides by the time step :
The left-hand side is now a difference quotient, the average rate of change of across the interval . The derivative of is defined as exactly this quotient in the limit of a vanishing time step:
So letting turns the left-hand side into by definition. This is not a free choice of limit; it is the one limit that converts an average rate over an interval into the instantaneous rate at a point. The right-hand side carries no , so the limit leaves it untouched. What remains is the Malthus ODE,
The differential equation , which says a quantity’s rate of change is proportional to the quantity itself, is one of the most familiar in all of mathematics. Its solution is known outright, with no derivation work needed, which is why the exponential above can simply be written down.
Verify the solution by substitution
We can confirm without solving anything — just substitute it back into both requirements. Differentiating with respect to , the chain rule brings the down in front:
so the ODE is satisfied. And at ,
so the initial condition is satisfied too. Both checks pass, so this is the solution. As for why the exponential turns up at all: is the function that reproduces itself under differentiation, up to the factor , which is exactly what asks for.
The sign of the growth rate decides everything:
- : births outpace deaths, and grows exponentially — not merely upward, but with an ever-steepening climb, doubling again and again over equal stretches of time.
- : deaths win, and the population decays exponentially, sinking toward zero.
- : births and deaths exactly cancel, and the population sits forever at its starting value .
The figure shows all three at once, every curve started from the same population . With the curve soars, steepening as it climbs; with it sinks toward zero; with it holds flat. Nothing but the sign of separates a population that explodes from one that vanishes.
This is the model’s defining feature and equally its weakness: the behavior is purely exponential, and exponential change is violent — extremely fast growth or decay with nothing to temper it. Two limitations stand out. On the growth side, rises without any ceiling, yet no real population grows forever: food, space, and other resources are finite, and sooner or later they bite. The refinements later on this page exist precisely to put a brake on this runaway growth.
On the decay side the flaw is subtler. An exponential with keeps shrinking toward zero without ever reaching it — the model would send a population of five rabbits through of a rabbit, then , and onward forever. A real population is a whole-number count: five rabbits, then four, then — possibly — none at all. Treating the headcount as a continuous, real-valued quantity is exactly what made calculus available, but the price is that the model cannot represent the integer steps a population truly takes, nor outright extinction. Populations are discrete; the model is continuous, and this gap is the cost of that convenience.
A discrete model?
The derivation behind the Malthus model was, start to finish, a continuous one: we wrote down a difference equation, shrank the time step to zero, and handed the problem to calculus. That move sits a little uneasily next to something we already conceded: a population is a count of whole individuals, not a quantity that varies smoothly. So it is fair to push back. If the thing being modeled is inherently discrete, can we build a model that stays discrete throughout, never taking a limit at all? And if we can, does it disagree with the continuous one?
It turns out we can, and the discrete model rests on a single assumption — the very one Malthus made, only rephrased so that no rate of change appears in it. A constant growth rate and a fixed doubling time are two ways of saying the same thing: if a population grows by the same proportion in every equal stretch of time, then the time it needs to double is always the same.
The doubling time of a growing population is the time the population takes to double in size. When the growth rate is constant, this time is constant too: the population doubles over equal stretches of time no matter how large it has already grown — going from to individuals takes exactly as long as going from to .
Why a constant growth rate fixes the doubling time
Take the Malthus solution with constant. Counting from any instant , the population has doubled once it reaches , at some later instant :
Substitute the exponential on both sides:
Dividing through by collapses this to
The instant has cancelled out completely. Wherever you start counting from, and whatever the population happens to be then, the doubling condition is identical, so the same works everywhere. Taking logarithms gives , the relation between the two constants that returns below.
So take “the population doubles every years” as the founding rule and follow it forward in steps of . Starting from individuals at time :
- after years the population has doubled once, reaching ;
- after years it has doubled twice, reaching ;
- after years it has doubled times, reaching .
Writing for the population after doublings, the whole model is one line:
There is no differential equation here, no limit, no calculus — only repeated doubling, indexed by the whole number . To set it next to Malthus’s , all that is missing is to write this same rule with a base of rather than a base of , which is a matter of algebra and not of modeling:
Rewriting the doubling rule as an exponential
The rule is already complete; rewriting it with base changes how it looks, not what it says. Since ,
The exponent counts doublings, but the quantity we want to read off is the elapsed time . Multiplying the exponent by , which is just , makes appear as a single block:
Therefore
Naming the constant that multiplies as puts the model in its final form, . The only facts used were and a multiplication by .
Now set the two models side by side. The continuous Malthus model gives ; the discrete model gives . These are the same function of time. The discrete model has simply restricted where that function is allowed to be read.
That restriction is the one real difference between them, and it is worth stating plainly. The discrete model is defined only on a grid of times, , spaced one doubling time apart. With a doubling time of years, for instance, it speaks about the population in year , year , year , year , and so on, and has nothing at all to say about year , which is not a grid point. The continuous model, handed the same , returns a value at every real time , the instants between the grid points included.
The two are joined in the natural way. Stop treating as a whole number of completed doublings and instead let it range over every non-negative real value , and becomes , the Malthus solution exactly. Filling in the instants between the grid points is the whole of what separates the discrete model from the continuous one.
This is a reassuring outcome. Two genuinely different starting points — one continuous and built on calculus, the other discrete and built on plain counting — converge on the very same formula. The continuous model is not a distortion accepted for the convenience of calculus; it is the natural interpolation of the discrete picture, the smooth curve threaded through the grid points that the discrete model pins down. That agreement is what lets us lean on continuous models for the rest of this page with a clear conscience.
An aside: interest rates
The exponential that the Malthus model produced is worth pausing on, because it is not really a fact about populations at all. It is a fact about constant proportional growth: any quantity that grows by a fixed fraction of itself in each equal stretch of time obeys an exponential of exactly this shape. A population is one instance. Money in an interest-bearing bank account is another, and it turns out to be governed by the very same equation. The short detour through it is worth taking, because it makes a point that runs through all of modeling: a model is a mathematical structure, and one and the same structure can describe situations that have nothing physical in common.
Start with a principal , an initial sum of money placed in an account, and suppose the bank offers a nominal interest rate of percent per year. It is tidier to carry the rate as a plain fraction than as a percentage, so write
turning a quoted rate of into .
If the bank pays interest just once a year, each year multiplies the balance by . One year on, the account holds ; the year after, ; and after years,
Often, though, interest is added more than once a year — this is compound interest, the arrangement in which interest already credited goes on to earn interest of its own. Compounding monthly slices the annual rate into twelve equal parts of and applies one each month, which over years is separate steps:
Compounding daily slices the year into steps of apiece, for steps across years:
The pattern is plain: compounding more often means more steps, each one smaller. Carry that to its limit. Let be the number of compounding steps per year and let , so that interest is credited neither monthly nor daily but continuously, in infinitely many infinitely small installments. The balance after years is then a limit:
This limiting arrangement is called continuous compounding.
Why the limit gives an exponential
The whole step rests on one standard limit, itself one of the ways the exponential function is defined:
Our expression is not quite in that shape. Its base carries the fraction while its exponent is , whereas the standard limit needs one and the same symbol in the fraction’s denominator and in the exponent. So make the two agree. Multiply above and below by , which changes nothing since :
The balance after years now reads
Write for the total number of compounding steps taken across the whole years. Sending sends along with it, and the balance becomes
This is the standard limit exactly, with . As the bracket tends to , so the balance under continuous compounding is .
Now set this beside Malthus. Continuous compounding grows a principal to after years; the Malthus model grows a population to after time . These are the same formula. The principal stands exactly where the starting population stood, the interest rate where the growth rate stood, and the elapsed years where the time stood. A continuously compounded bank account is, in every mathematical respect, a Malthusian population: money “reproduces” at a constant rate per unit held, just as Malthus’s individuals do, and it grows just as relentlessly, with no ceiling anywhere to slow it down. That is a comfortable arrangement for whoever is collecting the interest, and the banks have long known it.
Because the two models are identical, every consequence of one is a consequence of the other, the doubling time included. How long must a sum sit before it is worth twice the original ? Under annual compounding the balance has doubled once ; dividing by and taking logarithms,
Under continuous compounding the doubling condition is instead, and the same two moves give
This last one is precisely the population relation from before, now with playing the part of .
The two formulas look different, but for the modest rates a bank actually pays they very nearly agree, and both fold into a rule simple enough to do in your head. For small the logarithm sits very close to itself: at it equals , barely different, so the annual-compounding all but lands on the continuous one. And is near enough to that
the final step using . This is the rule of 70: to get the doubling time in years, divide by the interest rate written as a percentage. A balance at doubles in about a decade; at it takes about years. And since the population model is the same model, the shortcut carries over to it unchanged — a species growing at a year doubles roughly every years.
Is exponential growth realistic?
The Malthus model commits a population to pure exponential growth, climbing without limit for as long as time runs. Before refining it, the blunt question is worth asking head-on: does any real population behave like that? The honest answer is for a while, yes — but not forever.
Over a bounded stretch of time, real data can follow an exponential almost exactly. The standard illustration is world population between 1700 and 1961: across those two and a half centuries it tracked an exponential closely, at an annual growth rate of about (around ), which by the rule of 70 means the population doubled roughly every years, or to be precise. That clean fit is partly a fluke of the window. The period itself was anything but uniform — wars and the 1918 influenza pandemic held growth back while the industrial revolution pushed it forward — and the curve looks smoothly exponential only because those opposing forces happened to roughly cancel.
Stretch the window, though, and the exponential always fails. A steady rate would have doubled world population yet again by around 1996; it did not. No population grows without bound, and the reason is the one thing the Malthus model leaves out entirely: resources are finite. Food, water, space, air — none of them is unlimited, and as a population swells, its members compete ever harder for a supply that does not grow with them. That competition acts as a brake, dragging the growth rate down. So in general exponential growth is not realistic, and the next refinement is built precisely to give a population a ceiling it approaches rather than a climb that never ends.
A first refinement: Verhulstian saturation
The Malthus model came with a verdict attached: a real population tracks its exponential for a while, then finite resources intervene and growth has to slow. A model meant to be realistic has to build that slowdown in. The first refinement that does so is due to Pierre-François Verhulst and his contemporaries, working in the 19th century, and its organizing idea is saturation — growth that eases off as a population fills its environment, levelling out at a finite saturation limit rather than climbing without end.
The Malthus model cannot produce that behavior, and the reason traces to a single assumption: its growth rate is constant, pinned at one value whether the population is sparse or desperately overcrowded. That is the assumption Verhulst overturns.
In the Malthus model the birth rate and the death rate were fixed numbers. Verhulst lets each one respond to the population itself: the more crowded the habitat, the harder reproduction becomes and the more dangerous life gets. The simplest way to build that in is to let each rate fall or rise along a straight line as the population changes.
The Verhulstian saturation refinement replaces the constant birth and death rates of the Malthus model with linear birth and death rates — each one a linear function of the current population :
The baseline rates and are the values the rates take at vanishing population, and the coefficients and measure how strongly the population feeds back on each rate. The four constants are required to satisfy
so that a crowded population breeds slower and dies faster, while a sparse one still grows.
Each rate is a constant baseline plus a term strictly proportional to , with no curvature and no higher powers. What those proportional terms do depends entirely on their sign, and the two signs are deliberately opposite:
- the birth rate carries a minus sign, , so a larger population lowers it — a crowded habitat reproduces less per unit of time;
- the death rate carries a plus sign, , so a larger population raises it — competition for finite food, water, and space makes a crowded habitat deadlier.
Both effects pull in the same direction: they brake growth. As climbs, slides down while rises, and the gap between them — the surplus of births over deaths that drives the population upward — keeps narrowing.
Those sign conditions are not arbitrary. That and are positive is exactly what makes the feedback a brake and not an accelerator: a growing population then loses births and gains deaths, rather than the reverse. And makes the baseline birth rate beat the baseline death rate, so a small, uncrowded population still grows — without that, the population could only ever decline, leaving no saturation to speak of, just a slow slide to extinction.
The rates have also changed in their bookkeeping. In the Malthus model the birth and death rates were counted per individual — offspring per individual per unit of time — and the population’s total change was recovered by multiplying by the headcount . Verhulst’s and are counted for the population as a whole instead: births and deaths per unit of time across the entire population, with the “per individual” dropped. It is a small change in what the symbols measure, but it changes how they assemble into an equation of motion for , which is the next step.
With the rates set up this way, the population can no longer run away. As it grows the braking strengthens, with falling and rising, until the two rates meet. At that population the births exactly offset the deaths, the net growth drops to zero, and the population stops changing. That balance point is a finite, positive number, and it is the saturation limit the whole refinement was built to produce — it has a name.
The carrying capacity of a saturating population is the saturation limit it approaches as time runs on, . It is the population size at which the falling birth rate and the rising death rate coincide, so that births balance deaths and growth halts. The carrying capacity is finite and strictly positive,
which is exactly the statement that the population neither grows without bound nor dwindles to nothing — it settles at a ceiling, and that ceiling lies above zero.
So the refinement amounts to a single substitution — the constant rates of Malthus become linear ones — and everything else follows from it. What that substitution does to the population over time is not visible yet: the linear rates still have to be folded into a differential equation for , and that equation solved. Doing so is the next step, and the solution will also return an explicit formula for built from the four constants, turning the bare claim that a carrying capacity exists into an actual number.
Can the birth rate go negative?
The formula , taken at face value, keeps falling as the population grows: past zero, and on into negative numbers, once is large enough. A negative birth rate is nonsense — nothing produces a negative number of offspring — so it is worth seeing why the model never actually lands there.
The argument needs only the constants’ signs. The birth rate is really a function of how many individuals there are, not of the clock: at a population of size , it equals , and the death rate equals . At the carrying capacity the population stops growing, so births and deaths exactly balance once the population reaches the size :
The right-hand side is a sum of positive numbers, hence strictly positive — so the left-hand side, the birth rate at population , is strictly positive too. It is not zero but a genuine positive number. At any population smaller than the birth rate is larger still, since a smaller population subtracts less from . So across the whole range a saturating population occupies, from a sparse start up to its ceiling , the birth rate stays comfortably positive. It would fall to zero only once the population reached the size , and since the rate is still positive at and keeps decreasing beyond it, that size lies somewhere past , among populations too large for the environment to sustain — sizes a saturating population drifts away from rather than toward.
The saturation equation
The linear birth and death rates describe how fast a population reproduces and dies, but they are not yet a model: on their own they say nothing about how the population moves. Turning them into an equation of motion for is the short step this section takes — short, because most of the work was already done for Malthus.
Recall how the Malthus model was assembled, because the step here mirrors it. There the birth and death rates were counted per individual, so the population’s change over an interval had to be scaled up by the headcount before it meant anything. The linear rates are bookkept differently, as noted when they were introduced: and already count births and deaths for the whole population per unit of time. With the headcount thus baked in, building a difference equation and passing to the limit — the route already taken for Malthus — leaves the rate of change as births minus deaths outright, with no factor anywhere:
From the difference equation to the ODE
The derivation runs just as it did for the Malthus model, only with the new rates. Stand at time with individuals and step forward by a small interval . Across that interval the whole population produces births and suffers deaths — each rate is already a population-wide count per unit of time, so it is simply multiplied by the elapsed time, with no headcount factor needed. After the step, the population is the old count adjusted by both:
Subtract to isolate the change, and collect the two rate terms:
Divide both sides by the time step :
The left-hand side is the difference quotient of across ; letting turns it into the derivative by definition. The right-hand side carries no , so the limit passes it through untouched. What remains is the saturation model’s equation of motion,
Now substitute the linear forms. Taking and and subtracting, the equation becomes
The right-hand side is a linear function of the population: a constant , less a multiple of . This is already the model’s equation, but it reads better repackaged. Define two constants,
The first, , is the coefficient of ; the second, , is built so that equals the constant term . With those choices the equation factors neatly, collapsing to a compact and very suggestive form:
Those two names are worth dwelling on, because neither is mere shorthand.
The constant is a sum of two positive numbers, so . It sets the pace of the model: it gathers how sharply the birth rate falls and the death rate climbs as the population grows into a single number, measuring how briskly the population responds to its own size.
The constant is the one promised earlier. The carrying capacity was introduced as a claim — a finite, positive saturation level the model would somehow have to produce. Here it is, produced:
It is finite because the denominator is nonzero, and strictly positive because the sign conditions on the rates make numerator and denominator both positive: gives , and gives . So is no longer an assumption — it is a consequence of the four constants the model began with. The bare claim has become a number.
The differential equation tells the population how to change from one instant to the next, but not where to begin. Populations that start at different sizes trace different curves, all of them obeying the same equation — so the equation on its own describes a whole family of curves, not a single one. To pick out the one curve a particular population follows, the model needs a second fact: the population’s size at the start, the initial condition . The equation and this initial condition together make the model complete, and — as with the Malthus model — its solution can be written in closed form.
The Verhulst saturation model describes a single species whose birth and death rates vary linearly with the population. Its size satisfies the ODE
with initial condition . The two constants are , which sets the speed of the response, and the carrying capacity . The solution is
Solving the equation by shifting back to Malthus
The equation looks new, but one change of variable turns it into one already solved. Measure the population not from zero but from the carrying capacity: let
be the gap between the current population and . Since is a constant, the gap and the population change at the same rate, , and the equation rewrites cleanly as
This is the Malthus equation exactly: a quantity whose rate of change is a fixed multiple of the quantity itself. Only the names differ — the gap stands where the population stood, and the constant stands where the growth rate stood. So its solution is the Malthus exponential under that same renaming. Malthus’s
becomes, with written for , the constant for , and the starting gap for the starting population ,
The starting gap is not a new unknown — it follows from the definition of . Setting in and using the initial condition ,
Putting that into the exponential gives the gap at every time :
One step is left: the model asks for the population, not the gap. The definition rearranges directly to
and substituting the gap just found for produces the solution in full:
So the saturation model is not new behavior at all: it is Malthusian change measured from instead of from zero. And because , the effective growth rate is negative, so this Malthusian piece decays rather than explodes.
With the solution in hand, the population’s entire future can be read straight off the formula . It has just two pieces: the fixed number , and a time-varying term . Because , the exponential equals at and decays steadily toward zero, so that second term always shrinks away — whatever it does on the way, the population is bound for .
What the starting population decides is how the approach happens, through the sign of :
- if , so the population starts above its carrying capacity, then is positive: the second term is positive and shrinking, and descends toward from above;
- if , so the population starts below capacity, then is negative: the second term is negative and shrinking in magnitude, and climbs toward from below;
- if exactly, the second term is zero for all time, and the population holds at forever.
Let time run on without bound and the two cases merge into one. The exponential tends to zero, the time-varying term vanishes with it, and the population converges on its carrying capacity:
This is the saturation the refinement set out to deliver: starting high or starting low, every population the model describes is drawn to the same finite level and settles there — no unbounded boom, and no slide to extinction.
The figure puts that behavior in plain view. Each curve is one solution , started from a different population ; the dashed line is the carrying capacity . The curves beginning above bend down toward it and those beginning below climb up to it, but every one of them flattens onto the dashed line — the limit , seen directly. The approach is fast then slow: the exponential sheds most of the gap to early on, so each curve closes in quickly and then eases through the final stretch. Wherever a population starts, the model funnels it to the single level .
Is saturation realistic?
The saturation model earns its keep. Its solution rises or falls to the carrying capacity and settles there — and because is the level the population approaches as time runs on without end, it also goes by the name . That bounded behavior is the whole point of the refinement: where Malthus sent a population climbing forever toward infinity, the saturation model holds it to a finite ceiling. For any population living on limited resources — which is to say every real one — that is a genuine step toward realism.
And yet it is still not realistic, and the flaw shows the moment the clock starts. Picture a single pair of rabbits loosed into vast empty grassland — land that could in time feed millions of them. With only two rabbits and all that room, nothing whatsoever holds reproduction back, and the population ought to take off like a Malthusian exponential: slow at first, with just two rabbits to breed, then faster and faster as their numbers swell. The saturation model does the opposite. Its growth rate is set by the gap between the current population and the distant ceiling — and that gap is at its widest exactly when the population is smallest, at the very start. So the population grows fastest right at the start, and its growth slows a little more with every step after that, the whole way up to . The rabbits behave as if they could feel a ceiling getting closer and were holding back for it — when in fact they have room for millions more.
What realism asks for is a slowdown that comes later. While the population is small and its surroundings empty, it should grow like the Malthus model — an accelerating, exponential take-off. Only as it starts to crowd its limit should it switch to the saturation model’s behavior, bending over and easing onto . Both halves are already pictured on this page: the exponential climb in the Malthus figure, the saturating approach in the figure just above this section. A realistic history splices the two together, and spliced, it has the shape of an S — curving upward through the early boom, then curving over as it nears , with a single turning point where it passes from one half to the other. The saturation model has only the second half: its curve bends toward the ceiling from the very first instant, with no exponential phase before it and no turning point at all. Supplying that missing first half, and the turn into the second, is the work of the second refinement.
A second refinement: logistic growth
The saturation model gave a population a finite ceiling but spent realism getting it: its brake is active from the very first instant, even when there is nothing yet to brake against. The second refinement keeps the ceiling but rebuilds the brake so its strength depends on the population itself — weak when the population is small, strong only as the population grows. Done right, this produces the S-shape the previous section asked for.
The way to build a brake that scales with the population is to write the rate of change as a product of two factors:
with positive constants and , the first much larger than the second: . The second factor, , is just the current population — the “more makes more” multiplier already familiar from the Malthus model. The first factor, , is the new piece: an effective per-population growth rate that starts at when the population is vanishing and shrinks linearly toward zero as the population grows. That first factor is the brake — a number that punishes size.
The product of the two reads naturally as exponential growth with a built-in brake, and the two regimes can be read straight off it.
- When is small, the brake term is tiny next to , so . The equation collapses to — the Malthus equation with growth rate . The population takes off exponentially, exactly as it should in an empty habitat.
- As grows, catches up to , the first factor shrinks, and with it the effective growth rate. Growth slows, the curve starts to bend, and the brake — invisible until now — takes over.
The condition is what cleanly separates those two regimes. Because is so small, the brake term stays insignificant for a long stretch of population sizes, letting the Malthusian phase play out fully before saturation begins to bite. Take comparable to instead and the brake would press from the start, throwing the model back to the saturation behavior the refinement was meant to leave behind.
Distributing the product across rewrites the equation in a second, equally useful form:
The two forms say the same thing arithmetically but emphasize different ideas. The product form makes the modelling intent visible — Malthus’s multiplied by a slowing factor — while the expanded form names the new ingredient explicitly: pure Malthus growth corrected by a quadratic term that grows faster than the population and eventually overwhelms it. Both will be useful later.
The logistic growth model is the second refinement of Malthus: a single-species model whose effective per-population growth rate decreases linearly with the population, producing a Malthusian early phase that brakes itself into saturation. Its size satisfies the ODE
with positive constants and initial condition . The two forms of the right-hand side are algebraically identical; both are commonly used.
The same model is just as often written in the equivalent carrying-capacity form
which carries the carrying capacity directly in the equation rather than leaving it to be derived. It matches the forms above with and . The solution is
Why the two forms are the same model
Distribute across the bracket of the carrying-capacity form:
This has the exact shape of the expanded standard form : a multiple of minus a multiple of . Two equations of that shape describe the same model precisely when their matching coefficients agree, and reading off the coefficient of and the coefficient of in turn pins down the dictionary between the two parametrizations:
The first identity says is nothing new: it is the standard model’s , the growth rate the population runs at while it is still small and the brake is negligible. The second rearranges to give the carrying capacity in terms of the standard constants,
which is exactly the level the closed-form solution settles onto as , recovered here straight from the equation instead of from the limit. So the two forms are one model written two ways: the pair foregrounds the growth rate and the strength of the brake, while the pair foregrounds the growth rate and the ceiling the population is climbing toward.
A note on what is not in the derivation. For the Malthus model and the saturation model, the equation of motion was built up from a per-individual or per-population bookkeeping of births and deaths over a small step , and passing to the limit gave the ODE. No such build-up happens here: the logistic ODE is posited directly, as a modelling choice for the shape of the per-population growth rate. The interpretation of and — and the case for the quadratic term over, say, a cubic one — is taken up later in this chapter; for now, the equation is the model.
Deriving that closed form is more involved than for the previous two models. The right-hand side is quadratic in rather than linear, so the change-of-variable trick that solved the saturation equation no longer applies. The full derivation pairs separation of variables with a partial-fraction decomposition; the latter doesn’t earn enough use elsewhere in this chapter to develop from scratch here, so we take the formula as given and turn next to what it actually does.
Reading the logistic curve
With the logistic growth model in hand, the same questions surface that we asked of the saturation model: where does the population end up, and what shape does the journey take?
The limit is read straight off the closed-form solution. As , the exponential vanishes (since ), and the denominator collapses to just , leaving
The starting size cancels. Every solution ends up at the same level, set only by the model’s two constants — so saturation is built into the logistic curve just as it was into the Verhulst one. The level earns the same name, carrying capacity, only with a new formula:
What the starting point decides is how the population approaches , and the comparison with the saturation model splits the cases.
- If , the population starts below carrying capacity. It rises toward with the S-shape the refinement was built to deliver: an accelerating early climb while the brake term is still tiny, then a bend over the top as the brake catches up, easing onto in the final stretch. The turn happens at the inflection point , where the curve switches from accelerating to decelerating, and the bound holds for every .
- If , the population starts above carrying capacity. It descends monotonically toward from above with no inflection point — the same monotone descent the saturation model produced for populations starting above their ceiling. The bound holds throughout.
- If exactly, the population is already at its carrying capacity and stays there for all time.
The S-curve in the first case is exactly the shape asked for earlier — a Malthusian boom in the empty-habitat phase and a saturating tail near the ceiling, joined by a single turning point. Earlier those were two regimes that would have had to be spliced by hand. Here they aren’t a splice at all: one equation produces both, and the inflection where the regimes meet emerges from the formula on its own.
The figure shows several solution curves started from different , with the dashed line marking the carrying capacity . Curves below trace the characteristic S — slow at first, then a fast climb through the middle, then a gentle bend onto the dashed line — while curves above slide down to it directly. All of them level off on the same line.
To put numbers to the formula, the model has been fitted to census figures for the population of the United States from 1790 to 1950, giving
The Malthusian rate per year matches the early-American population boom, and the brake coefficient is small enough that the quadratic term only seriously bites once the population reaches the hundreds of millions. Substituting gives a carrying capacity of , roughly the U.S. population at the upper end of the fitting window.
With saturation built in and a realistic S-shape, the logistic model is decidedly more powerful than the two before it. What it still doesn’t capture is anything from outside the single species — no other species interacting with it, no external influences operating on it at all. Supplying those — first a framework for several species sharing an environment, then specific patterns like competition and predator–prey — is the work of the rest of this page.
Why quadratic, and not cubic?
The logistic ODE was posited directly as a modeling choice, with the quadratic brake taken on faith. We come back to that choice now. The exponent isn’t forced by the math: a cubic brake , or some power in between, would also produce a bounded, saturating curve. Picking the power is a modeling decision. The choice of two, though, has a clean interpretation that makes it the natural pick.
The picture is one of pairwise interaction. In a population of size , fix attention on a single individual and ask how much it is disturbed by the others — by competition for food, water, space, mates. The simplest assumption is that this disturbance grows in proportion to how many others are around: an individual surrounded by others is disturbed roughly times as much as one surrounded by just one. So the per-individual disturbance is proportional to .
But the equation of motion tracks the whole population, not one individual. The community-wide disturbance is the per-individual amount summed across all individuals, each one contributing :
So the brake is quadratic because it is the product of two factors of — one for how many individuals feel the disturbance, another for how strongly each is disturbed by its neighbors. It is the slogan the whole population disturbs the whole population made precise. A cubic term would correspond to disturbance from triples of individuals interacting at once rather than pairs — admissible, but with no equally simple reading.
Read in that light, the two terms of are opposite sides of the same crowd. The linear is the population’s total Malthusian growth contribution, scaling one-for-one with the headcount — each individual contributes its share independently of the others. The quadratic is the disturbance working against that growth, scaling pair-by-pair. The brake is one power higher than the drive because the brake comes from interactions and the drive does not.
An aside: two generalizations
Logistic-like growth can also be obtained from two more general formulations of the population dynamics. Neither is common in practice — the standard remains dominant — but they are worth naming, for completeness.
The first lets the growth rate depend on time:
with positive, monotonically decreasing, and continuous. The picture is a Malthusian model whose rate is no longer constant: the population still grows by a fixed fraction of itself per unit time, but that fraction fades as the years pass. Each condition does its own job: positive for the initial exponential climb, monotonically decreasing so that climb slows down over time, and continuous for mathematical reasons.
The second is more general still: the growth rate depends on the population itself,
with positive, monotonically decreasing, and tending to zero as . This is a super-class that includes the logistic growth model as a special case — there , linear in , vanishing at . Empirically this family is sufficient to describe closed populations — populations without external influences.
Another possibility: oscillations
The models so far all approach saturation smoothly. A natural question is whether a population might overshoot its limit, swing back below, and gradually settle in — the shape of a damped oscillation. There is a standard equation that produces exactly that:
a linear damped oscillator with , , and limit . With , its solution is
three pieces doing three jobs: the constant pins down the limit, the cosine produces the oscillation, and the decaying exponential shrinks that oscillation over time so the curve eventually settles.
What makes this qualitatively new is the second derivative — the equation now tracks not just how fast the population grows but how that growth rate itself is changing. The first derivative has a clean reading as net growth; the second derivative, the rate at which the rate changes, has no equally clean biological meaning, and without one there is little reason to bring it into a single-species model. Oscillations do show up naturally once two interacting species enter the picture — and that is where this page goes next.
More than one species
Every model so far has been a single species in isolation. The next step is coexistence — several species sharing an environment and influencing one another’s growth — and the simplest case is two species, and , tracked by their headcounts and . Two species means two equations of motion, one per population, and the modeling choice is whether the two species feel each other or not.
If they ignore one another — separate habitats, no shared resources, no predation — the system decouples. Each population evolves on its own, governed only by its own headcount, and the whole arrangement is just the logistic growth model (or one of its predecessors) written twice. Nothing genuinely new happens.
The case that does call for new tools is the opposite one: each species’ growth rate depends on both populations. Rabbits and foxes are the standard picture — more rabbits feed more foxes, more foxes kill more rabbits — and neither population can be tracked without watching the other. Each equation keeps the now-familiar shape, a population multiplied by its growth rate, only the growth rate of each species is now a function of both populations.
The two-species model describes two coupled species and . Their populations and satisfy the system of ODEs
The functions and are the growth rates of and , each one a function of both populations. They are only meaningful for non-negative arguments, since populations cannot be negative.
The growth rates and generalize the constant of the Malthus model and the linear factor of the logistic growth model: the same “headcount times rate” structure as before, only with the rate now allowed to feel both populations at once.
The first question to ask of any such system is when it settles into a state that never changes: a pair at which neither species changes, together, so the system would sit there forever if it ever arrived. Each equation is a product of two factors, the population and its growth rate, so each derivative vanishes the moment either factor does.
A stationary point (also called a steady state) of the two-species model is a pair at which both derivatives vanish,
so the system started at stays there for all time.
The name records what the system does at the pair, not how big the populations are: the state is stationary — no growth, no decay, for either species. Each derivative is a product — and , a growth rate times a population — and a product is zero when either factor is zero. So a pair can be stationary in two ways. A population sitting at zero, or , zeroes its own derivative no matter what its growth rate is doing: a degenerate stationary point, with one species simply extinct and any survivor balancing only against itself. The other way keeps both species present and instead drives both growth rates to zero, — the genuinely interesting case, and the one with its own name.
An equilibrium point (also called a coexistence point) is a stationary point at which both populations are strictly positive,
With both populations nonzero, the derivatives can vanish only if both growth rates do, so an equilibrium point is exactly a solution of with positive coordinates. Every equilibrium point is a stationary point; the converse fails whenever one of the populations sits at zero.
This is the kind of stability the rest of the chapter chases: both species hanging on indefinitely, neither outgrowing the other, neither dying out. Whether a particular system has an equilibrium is one question, answered by solving and checking the positivity of the resulting pair. Whether the system actually settles into the equilibrium from nearby starting points is another question entirely, and the next section takes it up.
Stability of equilibria
The first question about a two-species system is whether it has an equilibrium at all, answered by solving and checking that the resulting pair has both components positive. The second question is whether the system cares: an equilibrium exists in the equations whether or not the dynamics ever go near it, and the system may simply pass the pair by, or actively flee from it, or be drawn straight in. Which of those happens depends on what the populations and do when the system is started near . Geometrically, the populations trace a curve through the -plane as time runs — the system’s trajectory — and the standard vocabulary classifies what nearby trajectories do into three cases.
A trajectory of a two-species model is the curve traced through the -plane as time runs forward. For a 2D ODE system more generally, the trajectory is the curve in the state plane.
The most demanding of the three is the one where the populations not only reach the equilibrium from a nearby start but stay there once they do.
An equilibrium point is attractive when populations started near it both reach the equilibrium and stay there. From any starting pair close enough to , the system arrives at the equilibrium, at some finite time or in the limit as ; once there, the populations stay at for all later time. This is the kind of equilibrium two coexisting species genuinely settle into.
The opposite extreme is the one where nothing nearby reaches the equilibrium at all.
An equilibrium point is repulsive when populations started near it move away from the equilibrium. The pair is still a balance in the strict sense, since starting the system exactly on leaves it there forever, but the slightest perturbation grows over time, carrying the populations farther from the equilibrium rather than back to it.
In between is the mixed case, where some starting pairs feed in and others push out.
A saddle point is an equilibrium point that pulls populations in for some starting pairs while pushing them away for others. The set of starting pairs that actually reach the equilibrium is thin, so for generic starts a saddle behaves like a repulsive equilibrium, except populations are often pulled close to first before being pushed away.
Telling the three cases apart from the equations themselves is the work of linear stability analysis: the Jacobian of the system, evaluated at the equilibrium, has eigenvalues whose real parts classify the equilibrium as attractive, repulsive, or a saddle. The linked page is the full lookup table — six rows covering every generic case — and a later section in this chapter applies the criterion to the two-species setting specifically. The immediate next step is to revisit the arms race of two superpowers, and watch all three behaviors emerge in a system that is mathematically a two-species model, with military budgets standing in for headcounts.
A worked example: the arms race
The model returns in essentially the form it had when first introduced. The picture is deliberately spare. Two countries are tracked, labeled and (historically, the United States and the Soviet Union at the height of the Cold War). Each carries one number, its military expenditure at time , written and .
The arms race of two superpowers is the two-variable linear ODE system
for the military expenditures and of two superpowers and , with six positive constants
The rate functions and each gather three contributions: the disarmament rates and (domestic resistance to growing one’s own budget, per unit of one’s own current budget); the armament rates and (the response to the rival’s spending, per unit of the rival’s budget); and the baseline contributions and (constant additions to one’s own armament, independent of either budget — a negative baseline would represent a constant push toward disarmament instead).
Read either equation term by term and the modeling intent reads off directly. Take the line:
- : the more already spends, the harder it gets to justify spending even more — domestic political and economic resistance scales with the existing budget. The minus sign makes this a brake on the rate.
- : the more the rival spends, the more pressure there is to keep up — rivalry scales with the enemy’s budget. The plus sign makes this a driver.
- : a constant baseline pulling toward more spending no matter what either side is doing.
The equation has the same shape with the roles reversed: the brake scales with ‘s own budget, and the driver scales with the rival’s. Whether the combined system runs away, settles to a balance, or oscillates depends on whether the armament coefficients and win against the disarmament coefficients and — the question the next sections take up.
Because every right-hand-side term is linear in and , the system collapses into matrix form. Gathering the linear parts into a matrix and the constants into a vector,
The diagonal entries carry each country’s own self-restraint, with their negative signs; the off-diagonal entries carry the cross-influence from the rival, with positive signs.
The arms race is a coupled two-variable ODE system in the spirit of the two-species model of the previous section, but in a simpler shape, in two ways.
- The right-hand sides are linear in and . The two-species rate functions and were left general, allowing any dependence at all; here they are first-degree polynomials with no squared or product terms. A linear system is the easiest possible kind to analyze and the honest first place to apply the eigenvalue criterion.
- The system is not in the headcount-times-rate form , . Military budgets do not reproduce in proportion to themselves, so is not a multiple of , and is not a multiple of . The more general unfactored shape , used in linear stability analysis is the right shape for this model.
Equilibria of the arms race
The arms-race ODE is a linear system in — every right-hand-side term is linear in the budgets, plus a constant. Rewriting it in matrix form,
isolates the coefficient matrix , which is essentially the object that decides everything about the equilibria. Every question we’d ask about them reduces to a condition on the single scalar
The two products in that expression have natural physical readings. is the combined self-restraint — each country’s own disarmament rate multiplied together. is the combined cross-pressure — each country’s reaction rate to the rival’s spending, multiplied together. So a sign condition on is just a comparison between and . Two takeaways cover the whole picture.
A unique stationary point exists when . A stationary point is a pair where both rates vanish, . For this linear system, such a pair exists and is unique exactly when the coefficient matrix is invertible. Since , invertibility () is just . In model terms: as long as the combined self-restraint and the combined cross-pressure aren’t in the knife-edge balance , the system has a single budget pair at which neither superpower’s spending changes. The borderline is degenerate (no unique stationary point) and we set it aside for now.
Both rates vanish at , so the trajectory started exactly there never moves: the constant function
is therefore a special solution of the ODE, called the stationary solution.
The stationary point is a positive, attractive equilibrium when . Two requirements have to hold for the stationary point to count as a genuine, well-behaved equilibrium: both coordinates must be strictly positive (a negative military budget is meaningless), and small departures must be damped back rather than amplified. Both reduce to the same inequality: , i.e. . Positivity follows because and always share the sign of ; stability follows because linear stability analysis classifies the system via the eigenvalues of its Jacobian, which is everywhere, and the model’s sign constraints reduce that eigenvalue analysis to a condition on alone. Three cases fall out:
- (, restraints win): the equilibrium is attractive.
- (, cross-pressures win): the stationary point has negative coordinates and is a saddle.
- (): degenerate, as set aside above.
In model terms: when restraints win, any small departure from equilibrium is damped down faster than the two countries can amplify it back at each other, and the budgets are drawn to no matter where they start. When cross-pressures win, a small rise on one side drives a larger rise on the other, which drives a larger rise back on the first, and the budgets escalate without bound.
Why positivity and stability both reduce to
Positivity. Setting the right-hand sides of the ODE to zero gives the linear system
which any standard method (substitution, elimination, Cramer’s rule) solves to
Each numerator is a sum of products of positive constants, hence strictly positive, and the common denominator is . So and always share the sign of .
Stability. From linear stability analysis, the equilibrium is attractive when both eigenvalues of have negative real parts. Two algebraic identities about eigenvalues do the work:
- equals the product of ‘s eigenvalues, so means the two eigenvalues share a sign — both negative or both positive, never one of each. The saddle case (mixed signs) is ruled out.
- equals the sum of ‘s eigenvalues, and here is strictly negative since .
Same-sign eigenvalues summing to a negative number can only be both negative. So forces both eigenvalues negative, hence the equilibrium is attractive.
When instead, the eigenvalues have opposite signs and the stationary point is a saddle. When , one eigenvalue is zero — the degenerate case.
Trajectories of the arms race
The previous section classified the arms-race system’s behavior abstractly, using only the sign of — whether an equilibrium exists, whether trajectories converge to it or escape from it — without ever drawing a trajectory. We now pick three concrete sets of constants and watch what the trajectories actually do. Each scenario lands in a different qualitative regime, and each also corresponds to a different political argument made about the Cold War arms race.
Equilibrium
The first scenario fixes the six constants like this:
The two countries share the same disarmament rate, , and the same armament rate, . Only the baselines, and , break the symmetry between them. The determinant of the coefficient matrix is
equivalently — the combined self-restraint beats the combined cross-pressure. By the analysis above, the system has a unique stationary point with strictly positive coordinates, and it is an attractive equilibrium. The eigenvalues of confirm this directly: solving gives
both real and strictly negative — the eigenvalue signature of an attractor. The shortcut from the previous section spares us this calculation, but the two routes agree.
Computing the equilibrium
Setting both rates to zero gives a linear system in ,
which the explicit formulas derived above solve directly:
So the equilibrium sits at .
To watch a specific trajectory the model produces, we pick a starting state at . The pair is a free input to the model, not something derived from the equations: we choose where the budgets sit initially, and the ODE then determines everything that happens afterwards. Take
so country starts low at and country starts higher at — both off the equilibrium but in its neighborhood.
Why we don’t write a closed-form here
The Malthus, saturation, and logistic sections each ended with a closed-form solution — a function we could plug into and read off the population at any later . We don’t write the analogous formula for the arms race. A closed form does exist (every 2D linear ODE has one, built from the eigenvalues and eigenvectors of ), but the qualitative behavior we care about — does the trajectory converge to the equilibrium, escape it, or oscillate around it? — is already pinned down by the determinant and eigenvalue analysis above, without ever evaluating the formula at a specific .
So “follow the trajectory from ” doesn’t mean plug into a closed-form solution that takes as input — there isn’t one written down. We do still plug them into something, though — the ODE itself, just iteratively. Start at ; read the velocity there by plugging the state into the ODE’s right-hand sides; take a tiny step of size in that direction to arrive at ; plug the new state back into the ODE for a new velocity; step again; and assemble the trajectory out of all those tiny steps. The figures below are computed exactly that way, by numerical simulation — and that iterative stepping is all ever needed to be.
Two complementary diagrams help see what happens next. The familiar one plots each budget against time — a time-series plot with on the horizontal axis and , on the vertical. The other plots the two budgets against each other in a single plane, with no time axis at all.
A phase portrait of a 2D ODE system , is a plot in the -plane — the system’s state space — showing two pieces of information at once:
- a direction field: at each point of the plane, an arrow pointing in the direction that the system would move from that state;
- one or more trajectories, each curve tracing how the system evolves from a chosen initial state.
Time is implicit — it does not appear on either axis but advances along each trajectory as the system runs. A trajectory always follows the arrows: at every point it passes through, its tangent direction matches the local arrow’s.
Phase portrait for this scenario. The blue dot marks the starting state ; the blue curve is the trajectory running forward in time; the red dot is the equilibrium . Every direction-field arrow in the neighborhood of the equilibrium points roughly toward it, and the trajectory glides smoothly into the red dot and settles there.
The same trajectory plotted against time, with in red and in green over . ’s budget climbs monotonically from toward , while ‘s budget falls from , dips briefly below , then rises back to settle at . The undershoot in is a consequence of the trajectory’s two exponentially decaying components — at rates and — fading at different speeds: not every linear combination of two decaying exponentials approaches its limit from one side.
The two views agree on the same conclusion: every starting state near is pulled in by the dynamics and held there. The two budgets settle into a stable balance — no runaway escalation, and no escape from the equilibrium once reached — which is exactly what an attractive equilibrium is supposed to deliver.
Pro-arms-race politicians during the Cold War made exactly this argument — keep buying more tanks; eventually we’ll hit the limit, and peace will be on earth. An attractive equilibrium with positive coordinates is precisely that story: both budgets climb toward a finite ceiling and settle there. Critics of the arms race told a different story, and the next scenario is where that story gets its mathematical form.
Explosion
The second scenario keeps the symmetric structure of the first but turns the dials: less self-restraint, more cross-pressure, and one negative baseline.
The constants are now (down from ) and (up from ): each country reacts more strongly to the rival’s spending and pushes back less against its own existing budget. The baselines are and . The negative sits slightly outside the model definition’s requirement, but reads naturally within the framework as a constant push toward disarmament on ‘s side — the interpretation the model’s wording flagged when it was first introduced.
The determinant of the coefficient matrix now flips sign:
equivalently — the combined cross-pressure now beats the combined self-restraint. By the analysis above, the system still has a unique stationary point (since ), but it is now a saddle rather than an attractor (since ). The eigenvalues of confirm this directly: solving gives
one positive, one negative — the eigenvalue signature of a saddle.
Computing the stationary point
Same formulas as the previous scenario, applied to the new constants:
So the stationary point sits at — by coincidence the same coordinates as the equilibrium in the previous scenario. Both coordinates are strictly positive, so it still qualifies as an equilibrium point (even though it is not an attractive one). The negative baseline is what makes the positivity possible: with all six constants positive, the previous-section argument predicted that would force the stationary point’s coordinates to be negative — and indeed, swapping for any positive value here would push the equilibrium into the negative quadrant, an unphysical place for two military budgets. The negative baseline flips the numerator’s sign and brings the equilibrium back into the positive quadrant.
Take the starting state : country starts close to its equilibrium value of , while country starts well above its equilibrium of .
Phase portrait for this scenario. The blue dot marks the starting state ; the blue curve is the trajectory running forward in time; the red dot is the stationary point , not an attractor here since one eigenvalue is positive. The trajectory bends in toward the red dot along the stable eigendirection (the negative-eigenvalue one), then catches the unstable eigendirection (the positive-eigenvalue one) and shoots out of the visible window.
Same trajectory plotted against time, with in red and in green over . Both budgets first dip briefly toward their equilibrium values — from toward , from toward — but past about the growing exponential component (at rate ) takes over and both climb without bound.
The two views agree: the equilibrium is real but unreachable. A trajectory approaches it only long enough for the decaying exponential component (rate ) to fade out, after which the growing component (rate ) takes over and pushes the state apart exponentially. The stationary point still exists in principle — sit a budget pair exactly at and neither side ever changes — but no nearby trajectory ever lands there.
This is the mathematical form of the argument peace movements made against the Cold War’s pro-arms-race politicians: you keep buying more and more, and there is no end in sight. An equilibrium of mutual restraint may exist on paper, but the dynamics push every actual trajectory away from it. No ceiling, no balance, just exponential escalation.
Spiral
The third scenario keeps the symmetric magnitudes and from the previous one, but flips the sign of — producing an asymmetric cross-response between the two countries.
The constants are now , , , , . Two of them sit outside the model definition’s strict requirement, and need framing.
The sign flip on is the substantial one. The model originally treats as ‘s armament rate — a positive coefficient measuring how strongly matches ‘s spending. A negative inverts that reading entirely: now reacts to ‘s escalation by decreasing its own budget rather than increasing it. Read as a national posture, has gone concessive — the more arms, the less we arm — a kind of unilateral restraint in the face of rival escalation. on the other hand still behaves conventionally (, “we match the rival”). So the system is no longer describing two superpowers locked in mutual escalation; it is describing a mismatched pair, one aggressive country and one peace-leaning one.
The is the milder deviation: has no constant baseline push toward arming, only its rival-response and self-restraint terms. It sits at the boundary of the model’s requirement rather than violating it.
The determinant of the coefficient matrix is
By the analysis above, the system has a unique stationary point (since ), and the eigenvalue-based attractive verdict still applies: together with forces both eigenvalues to have negative real parts, the signature of an attractor. But the eigenvalues themselves now come out complex rather than real. Solving :
a complex-conjugate pair with negative real part and imaginary parts . So the system has an attractive equilibrium, but the imaginary parts add rotation to the radial attraction — trajectories don’t just approach the equilibrium, they spiral into it.
Computing the stationary point
Same formulas as the previous scenarios, applied to the new constants:
So the equilibrium sits at . Both coordinates are strictly positive — even with and outside the model’s strict requirements, the positivity falls out cleanly: kills the and terms (where would otherwise matter), leaving each numerator with a single positive contribution from , and the denominator is positive too. So this is an equilibrium point, and combined with the eigenvalue verdict above, an attractive equilibrium — specifically of the spiral kind.
Take the starting state : country starts at a low budget, at a notably high one, both well off the equilibrium.
Phase portrait for this scenario. The blue dot marks the starting state ; the blue curve is the trajectory running forward in time; the red dot is the attractive equilibrium . The trajectory curls partway around the equilibrium before tightening into it — the visual signature of complex eigenvalues with negative real part, where the rotation (from the imaginary parts ) sweeps the path around the equilibrium while the radial pull (from the real part ) tightens it inward.
Same trajectory plotted against time, with in red and in green. Each budget overshoots its equilibrium value before settling: climbs from past to a peak around , then drifts back down to ; falls from past to a low near , then rises back to . The overshoot is the time-domain signature of the imaginary parts ; the eventual settling, of the negative real part .
The two views agree: even with ‘s unconventional cross-response — retreating in response to ‘s escalation rather than matching it — the system still settles into a stable, positive arms balance. The asymmetric strategy doesn’t destabilize anything; it just changes the manner in which the equilibrium is reached, from the monotone approach of the first scenario to a spiraling one with overshoot before convergence. A behavioral pattern that looks counterintuitive — one side giving in while the other escalates — can settle into a stable balance just as readily as the symmetric “both restrained” case, in this model. It merely takes a more roundabout path to get there.
One caveat worth naming, now that all three scenarios have played out. An attractive equilibrium guarantees the budgets converge to a finite pair — but it says nothing about what those values are. Plug in different baselines, restraints, and cross-pressures and the same kind of attractor can land at , at , or anywhere else in the positive quadrant. “Peace through balance” only reads as peaceful if the balance itself is one humans would recognize as peaceful: a scenario where one country settles at tanks while the rival settles at a billion is mathematically still an attractive equilibrium — the dynamics hold the imbalance steady — but it is not what the politicians arguing for the arms race had in mind. The model classifies whether a system converges; whether the destination it converges to is desirable is a separate question, decided by the equilibrium’s actual coordinates and how lopsided they are relative to each other.
There is a deeper caveat too, and it questions the word stable itself. The eigenvalue verdict is a statement about the trajectories of two budgets: started near the equilibrium, they return to it. It is not a statement about whether the two governments will accept the balance the model predicts. Picture an equilibrium that the constants happen to place at , with country a hundred times better armed than its rival. The dynamics call this stable; the strategic logic of the Cold War might not, since a side that finds itself overwhelmingly ahead may simply attack, equilibrium or no equilibrium. Mathematical stability is about where the curves go, not about whether the actors tracing them will sit still once they arrive.
That gap points at something the model leaves out. Each country in the arms-race system reacts to its own budget through the brake and to the rival’s budget through the driver, but never to the difference between the two. A fuller model would make the gap a force of its own: a large positive gap, with far ahead, should drive to arm and close the distance, while a large negative gap should let ease off — the comparative logic of a two-power standard, the doctrine behind Britain’s Naval Defence Act of 1889, which held that the Royal Navy be kept at least as strong as the next two largest navies combined. Folding such difference-driven terms into the equations is the natural next refinement. Rather than chase it, we step back up to the general theory the arms race has been a deliberately linear special case of: two genuinely interacting species, with the eigenvalue criterion applied to them directly.
The two-species Jacobian
The arms race was a linear stand-in; the genuine two-species model has growth rates and that may depend on both populations in any way at all, so analyzing its equilibria means applying the eigenvalue criterion to the system as it stands. Collect the two right-hand sides into a single vector-valued function
whose roots (the pairs where it is zero) are exactly the stationary points of the system. We already know which of those roots matter most: when both components of a stationary point are strictly positive, it is an equilibrium, a state where the two species genuinely coexist. The criterion from linear stability analysis reads the verdict off the Jacobian of at that equilibrium: the equilibrium is attractive when every eigenvalue of has a negative real part. This is a sufficient condition, taken from the stability theory rather than re-derived here.
To build that Jacobian, differentiate at the equilibrium entry by entry. The off-diagonal entries are single partial derivatives, but each diagonal entry differentiates a product of a growth rate and its own population, so the product rule adds one extra term:
where a subscript denotes a partial derivative, and so on. Now use the defining property of the equilibrium: there both growth rates vanish, , so the two product-rule leftovers on the diagonal disappear, leaving the compact form
The eigenvalues of this matrix carry the verdict, and what they come out to depends entirely on the signs of its four partial derivatives. Those signs are set by how the two species actually affect each other — so this is the point where the biology of the situation enters the math. Three standard constellations describe the ways two species can be wired together, told apart by how each species’ growth responds to the other being around:
- competition (also concurrence): neither species hunts the other, but both need the same food, water, and territory, so more of one species leaves less to go around for the other — lions and leopards living off the same prey.
- predator–prey: one species is the other’s food, so more prey lets the predators multiply, while more predators thin out the prey — foxes and rabbits.
- symbiosis: each species does better when the other is around, so the two populations help each other grow.
The next sections work through the first two in detail. Each one fixes the signs of differently and gets a different equilibrium story out of the very same Jacobian.
Competition
In a competition scenario the two species are not predator and prey — neither eats the other — but they fight over the same finite resources: the same prey, the same water, the same territory. Lions and leopards on one savanna are the stock picture. The defining feature is that every influence, within a species and between the species, is negative. More of either population is bad for the growth of either species:
Read term by term, says ‘s own crowding slows (a lion is hindered by too many other lions chasing the same kill), and says ‘s presence slows as well (leopards taking a share of that kill). The growth rate of tells the mirror-image story through and . Everyone is disturbed by everyone.
These signs do most of the stability work for free. With all four partial derivatives negative, the Jacobian from the previous section automatically has a negative trace — its diagonal entries and are both negative, since the populations are positive. So the only thing left standing between this system and an attractive equilibrium is the sign of the determinant, and the sufficient condition is
In words: the product of the two self-influences must outweigh the product of the two cross-influences — each species must interfere with itself more than it interferes with the other. Biologically that is the usual case: a lion contends daily with the rest of its own pride, while the leopards a couple of valleys over barely register.
Why negative trace and positive determinant mean attractive
The condition above is exactly a positive-determinant condition on the Jacobian. Recall its form at the equilibrium,
Pulling the shared factor out of the top row and out of the bottom row, its determinant factors as
and since at an equilibrium, holds exactly when that bracketed combination is positive — the sufficient condition stated above. Together with the negative trace, two eigenvalue identities finish the argument:
- equals the product of the eigenvalues, so forces the two eigenvalues to share a sign — never one positive and one negative.
- equals the sum of the eigenvalues, and here that sum is negative.
Same-sign eigenvalues that add to a negative number can only both be negative (or, when they are a complex-conjugate pair, have negative real part). Either way every eigenvalue has a negative real part, so the equilibrium is attractive. This is the same trace-and-determinant shortcut that settled the arms race.
To turn the scenario into something solvable, take the simplest growth rates that respect the competition signs — linear ones:
a baseline plus one coefficient per population. The competition assumptions pin down every sign: the baselines (each species can grow while both populations are small), and the four interaction coefficients (every crowding effect hurts). These coefficients are the partial derivatives — , , , , all constant now — so the attractiveness condition becomes a plain inequality among them,
self-interference beats cross-interference, exactly as before.
The growth rates and are linear here, but the system itself is not. Each right-hand side and is a linear function times a population, hence quadratic in — unlike the arms race, whose right-hand sides were genuinely linear. That is why the Jacobian really does change from point to point, and why it has to be evaluated at the equilibrium rather than read off once and for all.
Because the combination is also the determinant of the linear system , the same inequality that buys attractiveness also makes that system non-degenerate: it has a unique solution, a single stationary point, automatically attractive. The one thing the signs do not yet guarantee is that this stationary point is a real equilibrium, with both populations strictly positive. That last check is the next step.
Solving is a two-equation, two-unknown problem, and the determinant — nonzero by the attractiveness condition — is exactly what lets it be solved uniquely. Cramer’s rule gives
Solving the system for
Move the baselines to the right-hand side to put the system in standard form,
whose coefficient matrix is with determinant . Cramer’s rule replaces one column at a time with the right-hand side:
Every entry of both numerator matrices is in fact negative: the substituted column carries and , negative because the baselines are positive, and the remaining coefficients are already negative by the competition assumptions. So in each determinant the two products are positive — each is a negative times a negative — and the minus sign that appears in the numerator is the one built into the determinant formula , not a sign carried by any of the coefficients.
The denominator is the determinant, positive by assumption; a zero denominator would signal no unique solution — the degenerate case held off until later. So the stationary point is well-defined and, as established, attractive. Whether it counts as an equilibrium rides only on the positivity check and , and working those two inequalities through the coefficient signs collapses them into a single chain:
Where the positivity chain comes from
Both fractions and share the positive denominator , so each is positive exactly when its numerator is.
For we need , i.e. . Divide both sides by ; since and the product is negative, which flips the inequality:
For we need , i.e. . Divide by , again negative (since , ), flipping the inequality:
Stack the two results and the chain falls out. Each ratio is a quotient of two like-signed coefficients, so all three are positive numbers being ordered.
When the coefficients obey this ordering, both populations come out positive, the stationary point is a genuine coexistence equilibrium, and — attractiveness already baked in — the two competing species settle into it from any nearby start.
One boundary case is worth flagging now. When — self-interference and cross-interference in exact balance — the determinant vanishes, the unique-solution argument collapses, and the attractiveness condition fails along with it. The linear model can still be made sense of in this degenerate case, but the outcome changes character: instead of one coexistence point, the system can drift to a state where one species dies out altogether. Two such degenerate examples come later.
Competition: worked examples
The competition theory is concrete enough now to run on numbers. Each example below fixes the six coefficients , checks the attractiveness condition and the positivity of the resulting stationary point, then follows one trajectory both as a phase portrait and as a plot against time — the same two-panel reading used for the arms race. Together they walk through the cases the theory left open: a clean coexistence equilibrium, two flavors of extinction, and two degenerate systems where the attractiveness condition fails outright.
Equilibrium
The first example is the well-behaved one, where every condition the previous section asked for holds. The two linear growth rates are
with coefficients , , , , , . The two baselines are positive and the four interaction coefficients are negative — exactly the competition sign pattern.
The attractiveness check is the determinant condition :
Self-interference beats cross-interference, so the stationary point is unique and attractive. The quick certificate for that verdict is the pair of eigenvalues of the coefficient matrix , which here come out to and — both real and negative. Negative eigenvalues mean and , and since the determinant is exactly the bracketed factor in , the positive sign carries straight over to the Jacobian that actually governs stability. (The eigenvalues of are not themselves the eigenvalues of — that matrix scales the rows by and — but their signs are what the attractiveness argument needs, and those transfer.)
Solving the system for
Using the Cramer’s-rule solution from the previous section,
with the denominator the determinant just computed. The pieces cancel in each numerator:
where in each line the two rational leftovers combine and the lone terms cancel against each other. So and .
Both coordinates of are strictly positive, so the stationary point is a genuine coexistence equilibrium, and with the determinant verdict already in hand, an attractive one.
Take the starting state : species starts scarce, well below its equilibrium value of , while starts crowded, three times its equilibrium of .
Phase portrait for this scenario. The blue dot marks the starting state ; the blue curve is the trajectory running forward in time; the red dot is the attractive equilibrium . From any nearby start the vector field sweeps the state into the red dot.
The same trajectory against time, with in green and in red over . climbs from up to its equilibrium value of along a smooth S-shaped curve; first rises above its starting value, then turns around and settles down to .
The two curves settle to the same equilibrium, but they get there in visibly different shapes — and the difference is the first genuinely two-species effect on this page. ’s curve is the familiar logistic one: a scarce population growing into the room left for it, leveling off at its carrying value with no overshoot. does something a single-species model can never produce. It climbs for a while, reaches a peak above its eventual level, and only then comes back down to settle at . That hump is the imprint of the other species: while is still scarce, has the habitat largely to itself and grows past its long-run share; as fills in and starts competing for the same resources, ‘s growth rate is pushed negative and it recedes to the level the two can sustain together. A single rise-and-fall like this is the mildest form of the oscillation two coupled populations can show — not a numerical artifact or a special case, but the ordinary behavior of a system where each population’s fortunes depend on the other’s.
Because the equilibrium is attractive, it is also robust to a shove. Cull part of either population by hand and you have simply moved to a new nearby start; the same vector field takes the state back to . Both panels show this directly — every trajectory in the neighborhood of the red dot flows into it — so a one-time disturbance to the populations heals itself rather than knocking the system onto a different path.
Extinction of
The next example keeps the competition setup but breaks the attractiveness condition, and the result is one species dying out. The growth rates are
so , , , — still all four negative, a legitimate competition model. But this time the determinant goes the wrong way:
Cross-interference now outweighs self-interference: each species hinders the other more than it hinders itself. The eigenvalues of the coefficient matrix make the consequence explicit — they are and , of opposite sign. A negative determinant forces exactly that split (the two eigenvalues multiply to , so they cannot share a sign), and one positive eigenvalue is all it takes to turn the stationary point into a saddle: attractive along one direction, repulsive along another, an attractor from no direction at all.
Solving the system for
Setting and clearing denominators (multiply each equation by ) gives
Adding the two equations gives , i.e. ; subtracting the first from the second gives , i.e. . So and .
Here is the first subtlety. The stationary point has both coordinates positive, so by the definition it is a genuine coexistence equilibrium — a state where and could in principle live side by side forever. What it is not is attractive. Because it is a saddle, almost every trajectory that comes near it is eventually pushed away, so the equilibrium exists on paper but plays no part in where the populations actually end up. It is a real equilibrium that the dynamics simply pass by.
Take the starting state , both populations small.
Phase portrait for this scenario. The blue dot is the start ; the red dot ringed in red is the saddle equilibrium . The trajectory rises away from the origin, bends well short of the equilibrium, and runs up the -axis: ‘s population is driven toward zero while survives. The ring marks a coexistence point the trajectory never reaches.
The same trajectory against time, with in green and in red. Both populations shoot up at first while resources are plentiful, but as crowding sets in the stronger competitor wins out: climbs and levels off near the capacity it can hold on its own, while peaks, turns over, and decays toward zero. The early hump in is the same two-species rise-and-fall seen before — only here it is the prelude to extinction rather than to coexistence.
The second subtlety is visible in both panels at once: the trajectory runs into a boundary. In the phase portrait it climbs the -axis where ; in the time plot sinks to the bottom of the frame. That boundary is the extinction of — the state where one of the two populations has vanished and only is left. The dynamics never reach the coexistence equilibrium; they carry the state to the edge of the positive quadrant, where the two-species problem collapses into a one-species one. What happens to the survivor after that is the subject of the next example.
What becomes of alone
With extinct, is the rest of time a golden age for ? Not really — and seeing why is a good check on the model. Once , one of the two equations drops out entirely (there is no left to evolve), and the other has its -dependence switched off. Substituting into ‘s growth rate leaves
This is no longer a two-species system at all. It is exactly the logistic growth model , with and — the same one-species equation studied earlier on this page. The survivor’s whole future is governed by the single-species theory the two-species framework was built on top of, which is the consistency one would hope for: knock a coexistence model down to one population and it should reduce to the one-population model, not to something foreign.
The logistic carrying capacity follows from the two constants,
To turn that into an explicit curve over time, the logistic solution needs one more input: a starting value. That comes from the handoff between the two phases. Restart the clock so that is the moment goes extinct, and let be the size of at that instant — reading it off the end of the previous example’s trajectory gives . The general logistic solution is the formula derived earlier,
and it is now just a matter of plugging in the three numbers , , and . Doing so gives
There is a small surprise in the numbers. is found at the moment disappears, which is a touch above its solo carrying capacity of — while was still around, the two-species transient briefly carried past the level it can hold on its own. With the competitor gone, the logistic dynamics ease that small excess back down, and settles onto and stays there. The negative sign on the term in the denominator is the trace of that: it makes approach its limit from above rather than below, the descending branch of the logistic curve rather than the familiar S. So the end state is not a runaway but a resting at precisely the saturation level the one-species model predicts — the two-species story handing off cleanly to the one-species one.
Extinction of
The saddle example lost a species because its coexistence equilibrium repelled almost every trajectory. This next example reaches extinction too, but by an entirely different mechanism — and lining the two up shows that “one species dies out” can come from opposite stability pictures. The growth rates are
so , , , . The determinant this time is comfortably positive:
and the eigenvalues of the coefficient matrix are and , both real and negative. By every test from the theory section this is the good case: self-interference beats cross-interference, the stationary point is unique, and it is attractive. There is no saddle here — trajectories really do get pulled in.
Solving the system for
The Cramer’s-rule formulas give, with the determinant in the denominator,
with the terms cancelling in each line just as in the first example. So and .
And there is the catch. The attractive stationary point is , and its second coordinate is negative. A population of is not a thing in the world, so this point lies outside the positive quadrant where the model means anything — it is not an equilibrium, because an equilibrium has to have both coordinates strictly positive. So the system has a perfectly good attractor that no real trajectory can ever occupy, because reaching it would require to go negative.
What the trajectory does instead is head toward that out-of-bounds attractor and hit the floor on the way. As the state is drawn down toward , the -population falls through every positive value and presses against — extinction of — while climbs toward its share of the doomed attractor near . The axis can’t be crossed (no population goes negative under these dynamics), so the realized end state is extinct and settling onto the carrying capacity it holds on its own.
Take the starting state , the same small-population start as before.
Phase portrait for this scenario. The blue dot is the start ; the trajectory swings up briefly and then is pulled down onto the -axis, where . The attractor that is bending it down sits at , below the axis and off the bottom of the frame — so no equilibrium dot is drawn, because there is no equilibrium in the region the model lives in.
The same trajectory against time, with in green and in red. jumps up at first while resources are abundant, then is dragged down to zero as the attractor pulls it below the axis; climbs and levels off near . The collapse of is sharp because the dynamics here are fast.
The two extinction examples reach the same place — one species gone, the other holding at its solo capacity — from opposite mathematical situations. In the saddle case the coexistence equilibrium existed (both coordinates positive) but repelled trajectories, so the populations were pushed off it toward extinction. Here the stationary point attracts trajectories but doesn’t exist as an equilibrium (one coordinate negative), so the populations are pulled toward a place they can’t physically be, and extinction is what happens when they hit the boundary trying to get there. Existence without attractiveness, or attractiveness without existence — either gap is enough to cost a species. A genuine, lasting coexistence needs both at once.
Degeneration: parallel nullclines
The last two examples sit on the boundary the theory flagged: , where the determinant is exactly zero and the whole machinery of “unique stationary point, automatically attractive” stops applying. The growth rates are deliberately simple,
and the determinant condition fails right at the edge:
To see what a zero determinant does to the geometry, it helps to picture two special lines in the -plane. On the line where , the growth rate of is zero, so and momentarily stops changing; on the line where , the growth rate of is zero, so and momentarily stops changing. A line on which one of the two populations holds still like this is called a nullcline — null because a rate of change is zero along it. So the system has a -nullcline, the line , and a -nullcline, the line .
Phase portrait for this scenario. The two parallel nullclines are drawn in: (orange) and (violet), never crossing. The red dots are the two stationary states and where the nullclines meet the axes. From the start (blue dot) the trajectory drops as both populations decline, then bends right along the -axis as dies out and recovers, ending on .
A point where the two nullclines cross is one where and stop changing at the very same instant — which is exactly the coexistence stationary point the system asks for. Finding that stationary point is therefore the same as finding where the two lines intersect. Here, though, the two nullclines turn out to be parallel and never cross, so there is no such point: no coexistence stationary point at all. That is what the zero determinant looks like geometrically.
The two nullclines, and why they never meet
Each nullcline is a straight line, found from its two axis intercepts.
For , i.e. : setting gives , and setting gives . So is the line through and .
For , i.e. : dividing by first gives the tidier , with intercepts (at ) and (at ). So is the line through and .
Both lines have the same slope — each is a line of constant — so they are parallel. Writing the system in matrix form makes the failure algebraic rather than visual:
The coefficient matrix has determinant , so it is non-invertible and the system has no unique solution. Dividing the second row by exposes the contradiction directly:
two demands on the same quantity that can never both hold. The system is not just short of a unique solution — it has no solution. Geometrically, the two parallel lines never meet.
No coexistence point, then. But the system is not without stationary states — they just sit on the axes instead of the interior. A state is stationary when and . With and never simultaneously zero, the only way to satisfy both is to send one of the populations to zero, which kills one product regardless of the growth rate:
- together with : the second equation holds because ; the first needs , i.e. , giving the point .
- together with : the first equation holds because ; the second needs , i.e. , giving the point .
These two points, and , are where each nullcline crosses an axis. Strictly they are stationary states, not coexistence equilibria — each has one population already at zero, so neither describes two species living together. Each is the end of an extinction: is ” gone, holding at ”, and is ” gone, holding at ”. Until now every example had either one coexistence equilibrium or none; the degenerate case is the first with two stationary states to choose between.
And the system does choose, based on where it starts. Take : both growth rates are strongly negative there, so both populations fall at first, but — starting high and with the steeper rate — crashes far faster than . By the time the state nears the axes, has effectively vanished, and with the competitor gone recovers and climbs to the capacity it holds alone. The trajectory lands on .
The same trajectory against time, with in green and in red. falls steeply from to zero — extinction of — while dips briefly and then climbs to settle at .
So the degenerate model still resolves to a definite outcome, but it has given up the clean story of the non-degenerate case. There is no coexistence equilibrium to attract anything; there are two extinction states instead, and which one the populations reach is decided by the starting balance rather than by the model alone. Tilt the initial populations the other way and the same equations would carry the system to , extinguishing instead.
Degeneration: a line of equilibria
The determinant can vanish in a second, qualitatively different way. The previous example had parallel nullclines that never met; this one has nullclines that coincide entirely. The growth rates are
with the same singular sign pattern,
but now is not merely parallel to — it is exactly twice it, . The two growth rates vanish on the very same line, . Where the parallel case had no coexistence point, this case has a coexistence point everywhere along a line: every state on has both and , so both and vanish there. The system has not one stationary point, and not none, but a whole continuum of them.
Why the system has infinitely many solutions
Writing in matrix form,
the coefficient matrix is the same singular one as in the parallel case, with determinant . The difference is on the right. The second row is exactly twice the first — on both sides, since — so the second equation says nothing the first didn’t already. What looked like two constraints is really one, , and a single linear equation in two unknowns is satisfied by a whole line of pairs. This is the consistent version of rank deficiency: in the parallel case the second row was the first on the left but not on the right, an outright contradiction; here it matches on both sides, so instead of no solution there are infinitely many.
The stationary set is the segment of inside the positive quadrant, running from on the -axis to on the -axis. Its interior points — like , , — have both coordinates strictly positive, so unlike the parallel case these are genuine coexistence equilibria, and there is an unbroken continuum of them at every mixing ratio the line allows.
Phase portrait for this scenario. The red line is the continuum of stationary states , every point of it an equilibrium. The vector field on both sides points toward this line. From the start (blue dot) the trajectory runs up to the line and halts where it meets it — a different start would halt at a different point of the same line.
What happens to a trajectory is now a question about a line rather than a point. Off the line, one of or is nonzero, so the populations move; the vector field everywhere points toward the line . A trajectory drifts until it reaches the line and then stops, because every point of the line is stationary. Which point it stops at is fixed entirely by where it started. Take : with scarce and plentiful, the state climbs the short distance to the line and settles near the -rich end of it.
The same trajectory against time, with in green and in red. stays low while rises a little, and both flatten out the moment the state reaches the stationary line — this is just one of the infinitely many outcomes the model allows.
There is one more twist worth naming. Every point on that line is attractive, even though the determinant condition for attractiveness is violated outright (). The sufficient condition from the theory — negative trace and positive determinant — was always sufficient, not necessary: its failure does not prove a stationary point repels. Here the failure coincides with the richest stability picture on the page, a one-dimensional set of equilibria that draws in every nearby trajectory. What the degeneracy costs is not stability but determinacy: the model no longer predicts a single end state, only the line the end state must lie on. Pin down the outcome and you need more than the equations — you need the starting populations too.
Predator and prey
The other constellation worth working through in full is the predator–prey relationship, where one species is the other’s food. This is the asymmetric case. In competition every influence ran the same way — everyone hurts everyone — but here the two species are wired together with opposite signs: more prey is good for the predator, while more predators is bad for the prey.
Keep the roles fixed: let be the predator and the prey, so is what eats — foxes and rabbits are the stock picture. Three of the four influences are still negative, exactly as in competition, and only one flips sign:
Reading them in turn: is the predator’s own crowding (too many foxes chasing the same rabbits); is the prey being thinned out by the predators (more foxes, fewer rabbits); is the prey’s own crowding (rabbits competing among themselves for grass). The one that changes is : the predator’s growth rate rises with more prey around — a fox does better when rabbits are plentiful.
That single sign flip is what makes the predator–prey story oscillate rather than settle quietly. More rabbits feed more foxes; more foxes eat down the rabbits; fewer rabbits starve the foxes back down; and with the foxes thinned out the rabbits recover, starting the cycle over. The two populations chase each other around, rising and falling out of step. The full shape of those oscillations comes out of the simplest predator–prey model in the next section; here the goal is just the equilibrium analysis.
The same linear growth rates used for competition carry over,
only with the predator–prey signs imposed on the coefficients. Since the coefficients are the partial derivatives — , , , — the sign pattern reads off directly:
Now comes the payoff. In the competition case, an attractive equilibrium needed an extra inequality — self-interference had to beat cross-interference, . Here that condition holds for free: with the predator–prey signs, every stationary point that exists is automatically attractive. The whole stability question collapses into a single existence check — find the stationary point, and if both its coordinates are positive, it is an attractive equilibrium, with no determinant inequality left to verify.
Why every predator–prey equilibrium is automatically attractive
The verdict rides on the trace and determinant of the Jacobian at the equilibrium,
the same trace-and-determinant shortcut used for competition. The trace is , and since while , it is negative — just as in the competition case. The determinant is where the sign flip pays off:
Look at the bracket. The first product is a negative times a negative, so it is positive. The second product is a positive () times a negative (), so it is negative — and it enters with a minus sign, making positive too. The two positive pieces add rather than compete, so the bracket is positive no matter how large the cross-influences are, and automatically. With a negative trace and a positive determinant, the same two eigenvalue identities as before — the determinant is the product of the eigenvalues and the trace is their sum — force both eigenvalues to have negative real part, so the equilibrium is attractive. The competition case had to earn its positive determinant with an extra inequality; the predator–prey case gets it from the sign pattern alone.
So constructing a predator–prey equilibrium is shorter than the competition recipe — it drops the attractiveness test entirely:
- Solve the system for the stationary point . The same Cramer’s-rule formulas from the competition case apply, with the determinant in the denominator — and that determinant is strictly positive by the argument above, so it never vanishes and the solution is unique.
- Check that the calculated values are positive. If and , the stationary point is a genuine coexistence equilibrium — and it is attractive, with nothing further to test.
The Lotka–Volterra model
The simplest predator–prey model strips the picture down to its bare bones, and it is the famous one: the Lotka–Volterra model, named for Alfred Lotka and Vito Volterra, who arrived at it independently in the 1920s. It throws away every within-species effect and keeps only the cross-species interaction — predators living or dying purely by how much prey there is, prey thriving or being eaten purely by how many predators there are.
In the linear model that means switching off the two self-influence coefficients, (no -on- crowding, no -on- crowding), while keeping the predator–prey signs on the rest. The exterior influences stay unbalanced, and , and now the baselines are unbalanced too:
The two baseline signs carry the biology of an isolated species. The prey’s baseline says that left alone, with no predators around, the prey population grows — rabbits breed. The predator’s baseline says the opposite: with no prey to eat, the predators starve and decline. With the self-terms gone, the growth rates read
each depending only on the other population — the predator’s fate set entirely by the prey supply, the prey’s fate set entirely by the predator pressure.
The equilibrium is now easy to write down, because each growth rate involves only one variable. Setting and gives
and both come out positive on the predator–prey signs.
Solving for the equilibrium
With the self-terms gone, the two equations decouple. involves only , giving ; and involves only , giving . Each is positive: is a negative () over a positive () with a leading minus sign, hence positive, and likewise is a positive over a negative with a minus sign in front. So the Lotka–Volterra equilibrium always exists in the positive quadrant — there is no positivity test to fail.
By the predator–prey result of the previous section, an equilibrium that exists ought to be attractive. But the Lotka–Volterra model sits exactly on the boundary of that argument, and the conclusion fails. With , the Jacobian’s diagonal entries vanish, leaving
whose trace is exactly zero. The trace was the part of the attractiveness argument that needed the self-influences to be negative; switch them off and the trace is no longer negative, only zero. The eigenvalues turn out to be purely imaginary — their real parts are zero, not negative.
Why the eigenvalues are purely imaginary
The eigenvalues of a matrix are fixed by its trace and determinant through the characteristic equation
Here the trace is zero, so the equation collapses to
The determinant is
which is positive: and make the product negative, so , and . This is no surprise — the predator–prey analysis already showed for these signs. The square root of a negative number is imaginary, so
a conjugate pair sitting exactly on the imaginary axis, with no real part at all.
A zero real part is precisely the case the attractiveness test cannot rule on. Attractiveness demanded eigenvalues with strictly negative real part; repulsion would need a positive real part; here the real part is neither, sitting exactly between the two. The equilibrium is therefore neither attractive nor repulsive. To say what it is, we need a notion of good behavior weaker than attractiveness — a population that doesn’t settle onto the equilibrium but doesn’t run away from it either.
Stability and the Lotka–Volterra orbit
The way out is the idea of stability. Attractiveness asked a lot: that nearby trajectories both stay close and converge onto the equilibrium. There is a softer property worth naming on its own — staying close without the requirement of converging.
A satellite in orbit is the picture to keep in mind. It never falls to the center of the Earth, and it never flies off into space; it just circles, caught at a roughly fixed distance, and without some outside push it stays caught there forever. That is a kind of stability — the orbit is a stable situation — even though the satellite never comes to rest at any single point. The Lotka–Volterra equilibrium is stable in exactly this orbital sense.
A stationary point is stable when trajectories that start near it stay near it for all later time — they need not converge to the point, only remain within a bounded neighborhood of it. It is unstable when some nearby start is carried far away.
Stability is a weaker demand than attractiveness, and it splits the earlier classification cleanly in two:
- An attractive equilibrium is stable in the strongest way — nearby trajectories stay close and are pulled all the way in. A neutral center, whose trajectories circle the equilibrium forever on closed orbits (the borderline case in linear stability analysis), is stable as well: the orbits keep a fixed distance and never escape, even though they never arrive.
- A repulsive equilibrium and a saddle are both unstable — in each, at least one nearby start is driven away.
In eigenvalue terms this is the same cutoff linear stability analysis draws, read for stability rather than for the finer node-versus-spiral distinction: an eigenvalue with negative real part means stable (attractive); a positive real part means unstable (repulsive or a saddle); and purely imaginary eigenvalues, real part exactly zero, are the neutral-center borderline — stable but not attractive.
The Lotka–Volterra equilibrium is exactly that last, borderline case: the purely imaginary pair found above marks a neutral center, so it is stable, and the populations circle it on closed orbits without ever settling down.
Make it concrete with a specific Lotka–Volterra system,
The coefficients carry the Lotka–Volterra signs — no self-terms, baselines and , cross-influences and — so is the predator (it dies off without prey) and the prey (it breeds on its own). The equilibrium follows from the two one-variable equations:
So the populations balance at — ten predators to a hundred prey, the predators the rarer of the two, as one would expect. By the analysis above this center is stable but not attractive, so a population started away from it should neither spiral in nor fly out, but loop around it forever.
Phase portrait of the Lotka–Volterra system. The red ring marks the equilibrium . The trajectory from the start (blue dot) neither approaches the ring nor flees it — it traces a single closed loop around the center and returns to where it began, then repeats forever. Every other start traces its own closed loop at its own distance; the equilibrium is the still center they all circle, like satellites at different altitudes.
The same trajectory against time, with in green and in red. Both populations rise and fall in a steady cycle that repeats without damping — the signature of a neutral center. Predator and prey oscillate at the same period but out of step: each surge in the prey is followed, a little later, by a surge in the predators feeding on them, which then drives the prey back down — the chase described at the start of the section, drawn out in time.
Two features of this picture are worth drawing out. The first is that the closed orbit is not unique: it is just the loop this starting pair happens to sit on. Each initial condition picks out its own orbit, and the orbits nest around the center like rings. That has a sharp practical consequence — intervene in the system, say by culling some animals, and you do not nudge the populations back toward the cycle they were on; you drop them onto a different orbit, and they circle that one ever after. There is no built-in tendency to return to the orbit you left, because none of the orbits is singled out over the others. This is exactly what “stable but not attractive” buys you and what it costs: the populations stay bounded, but they never forget a disturbance.
The second is the danger lurking at the edges. The orbits swing wide, and the larger ones pass close to the axes — in the time plot very nearly grazes zero at the bottom of each predator trough. An orbit that actually reached an axis would mean a population hitting zero, which is extinction. So a large enough swing, or an intervention that throws the system onto a wide enough orbit, can carry one of the species to the brink — and the same neutral stability that keeps the populations cycling is what denies them any pull back from the edge.