Lotka-Volterra with Carrying Capacity
Logistic prey growth limits the prey population to \(K\) — shifting closed orbits into inward spirals that converge to a stable coexistence equilibrium.
The Model
This extension of the classical Lotka-Volterra system replaces the unbounded exponential prey growth \(\alpha x\) with logistic growth \(\alpha x(1 - x/K)\), where \(K\) is the carrying capacity — the maximum prey population the environment can support in the absence of predators:
When \(K\to\infty\) (or \(x\ll K\)), the model reduces to the classical Lotka-Volterra system. For finite \(K\), the prey equation is a logistic ODE perturbed by predation.
Parameters
- \(\alpha\) — prey intrinsic growth rate (per unit time, at low density)
- \(\beta\) — predation rate (prey removed per predator per unit time)
- \(\gamma\) — predator natural mortality rate
- \(\delta\) — predator reproduction rate per prey consumed
- \(K\) — prey carrying capacity (environmental limit)
- \(x_0, y_0\) — initial prey and predator populations
Equilibria
The system has three equilibria:
- Origin \((0,0)\): unstable saddle point.
- Prey-only \((K,0)\): prey at carrying capacity, no predators. Stable if \(\delta K < \gamma\) (predators can't survive); unstable otherwise.
-
Coexistence \((x^*, y^*)\): both species persist.
\[x^* = \frac{\gamma}{\delta}, \qquad y^* = \frac{\alpha}{\beta}\!\left(1 - \frac{x^*}{K}\right) = \frac{\alpha}{\beta}\!\left(1 - \frac{\gamma}{\delta K}\right).\]This equilibrium exists only when \(y^* > 0\), i.e. \(\delta K > \gamma\).
Stability: From Neutral Cycles to Damped Spirals
The classical Lotka-Volterra model (no carrying capacity) has a centre at the coexistence equilibrium — all orbits are closed (neutral cycles). Adding \(K\) breaks this degeneracy. The Jacobian at \((x^*, y^*)\) is
Because the trace is always strictly negative and the determinant strictly positive (whenever the interior equilibrium exists, i.e.\ \(K > \gamma/\delta\)), the coexistence equilibrium is always asymptotically stable:
- For \(K\) large relative to \(x^*\), the eigenvalues are complex with small negative real part — a stable spiral, trajectories wind inward with weakly damped oscillations. As \(K\to\infty\) the damping rate \(\alpha x^*/(2K)\to 0\) and the orbits approach the neutral cycles of the classical model.
- For \(K\) closer to \(x^*\) the discriminant \(\operatorname{tr}^2 J - 4\det J\) becomes positive: eigenvalues are real and negative — a stable node, no oscillation.
- For \(K < x^* = \gamma/\delta\) the interior equilibrium disappears (predators cannot be sustained) and the prey-only state \((K, 0)\) becomes the global attractor.
There is no Hopf bifurcation in this model and therefore no limit cycle: producing sustained predator-prey oscillations from a single equilibrium requires a non-linear functional response (e.g.\ Holling type II in the Rosenzweig-MacArthur model). The carrying capacity \(K\) alone damps the classical cycles rather than reorganising them.
In the phase portrait this is visible as an inward spiral rather than a closed loop; in the time series, oscillations gradually decrease in amplitude.
Numerical Method
RK4 with \(\Delta t = 0.02\), 25,000 steps (total time 500). Populations are floored at 0 to prevent numerical artefacts near extinction.
How to Use
- Drag any slider or type a value directly; plots update instantly.
- Set \(K\) very large (e.g. 500) to approach the classical model — orbits become nearly closed.
- Decrease \(K\) toward \(x^* = \gamma/\delta\) to watch the spiral tighten and oscillations dampen faster.
- Click Reset defaults to restore all parameters.
Cite this tool
Kapita, S. (2026). Lotka-Volterra with Carrying Capacity. Math Tools. https://shelvean.github.io/math-tools/lvcarrying.html
Kapita, Shelvean. "Lotka-Volterra with Carrying Capacity." Math Tools, 2026, shelvean.github.io/math-tools/lvcarrying.html.
@online{kapita2026lvcarrying,
author = {Shelvean Kapita},
title = {{Lotka-Volterra with Carrying Capacity}},
year = {2026},
organization = {Math Tools},
url = {https://shelvean.github.io/math-tools/lvcarrying.html}
}