Interactive Lecture
Two-Degree-of-Freedom Systems, Phase Portraits, and Limit Cycles
by Dr Arnaldo Delli Carri
Most real engineering and natural systems are nonlinear: their equations of motion cannot be written as \(\dot{\mathbf{x}} = A\mathbf{x}\). When a system has two state variables — two degrees of freedom — its behaviour can be visualised completely in a two-dimensional phase plane, where each point represents a unique state and the arrows show how that state evolves in time.
A two-dimensional autonomous nonlinear system \(\dot{x} = f(x,y)\), \(\dot{y} = g(x,y)\) can exhibit behaviours impossible in linear systems: multiple fixed points with different stability types, closed periodic orbits, and limit cycles — isolated closed trajectories that act as attractors or repellers. The phase portrait captures all of this geometry at once.
Proposed independently by Alfred Lotka (1925) and Vito Volterra (1926), the predator–prey model describes the coupled dynamics of two interacting populations: a prey species with density \(x\) and a predator species with density \(y\). Both variables are continuous and represent population numbers (or densities per unit area).
\[\dot{x} = \alpha x - \beta x y\]
\[\dot{y} = \delta x y - \gamma y\]
The product \(xy\) in both equations is the key nonlinearity. It models mass-action kinetics: the rate of predation events is proportional to the probability that a predator and prey individual encounter one another, which scales with both densities.
Setting \(\dot{x} = 0\) and \(\dot{y} = 0\) simultaneously gives the system's fixed points — states where neither population changes.
Trivial equilibrium: \(\quad (x^*, y^*) = (0,\,0)\)
Both species are absent. This is a saddle point: stable along the \(y\)-axis (predators alone die out), unstable along the \(x\)-axis (prey alone grow without bound).
Coexistence equilibrium: \(\quad (x^*, y^*) = \!\left(\dfrac{\gamma}{\delta},\;\dfrac{\alpha}{\beta}\right)\)
Derived by setting \(\alpha x - \beta xy = x(\alpha - \beta y) = 0 \Rightarrow y = \alpha/\beta\) (for \(x \neq 0\)) and \(\delta xy - \gamma y = y(\delta x - \gamma) = 0 \Rightarrow x = \gamma/\delta\) (for \(y \neq 0\)).
The Jacobian matrix of the system evaluated at a fixed point \((x^*, y^*)\) reveals its local stability:
\[J = \begin{pmatrix} \dfrac{\partial f}{\partial x} & \dfrac{\partial f}{\partial y} \\[10pt] \dfrac{\partial g}{\partial x} & \dfrac{\partial g}{\partial y} \end{pmatrix} = \begin{pmatrix} \alpha - \beta y & -\beta x \\ \delta y & \delta x - \gamma \end{pmatrix}\]
At the coexistence point \((x^*, y^*) = (\gamma/\delta,\;\alpha/\beta)\):
\[J^* = \begin{pmatrix} 0 & -\beta\gamma/\delta \\ \delta\alpha/\beta & 0 \end{pmatrix}\]
Eigenvalues: \(\lambda^2 = -(\beta\gamma/\delta)(\delta\alpha/\beta) = -\alpha\gamma \implies \lambda = \pm\,i\sqrt{\alpha\gamma}\)
The purely imaginary eigenvalues \(\lambda = \pm i\omega_0\) where \(\omega_0 = \sqrt{\alpha\gamma}\) indicate a centre in the linearised system. For the classical Lotka–Volterra model this holds nonlinearly too — all trajectories near the coexistence point are closed orbits, not spirals.
The classical Lotka–Volterra system is conservative: it possesses a first integral (conserved quantity) that is constant along every trajectory. Define:
\[H(x,y) = \delta x - \gamma \ln x + \beta y - \alpha \ln y = \text{constant}\]
It can be verified that \(\dfrac{dH}{dt} = \dfrac{\partial H}{\partial x}\dot{x} + \dfrac{\partial H}{\partial y}\dot{y} = 0\) identically along solutions.
Each value of \(H\) defines a closed curve in the phase plane. This is why the population cycles never damp out — there is no energy dissipation — and why the oscillation amplitude depends entirely on initial conditions.
Near the coexistence equilibrium, the linearised frequency gives an approximate period:
\[T \approx \frac{2\pi}{\sqrt{\alpha\gamma}}\]
For large-amplitude oscillations, the true period is longer. The conservation law \(H = \text{const}\) means the exact period can in principle be computed from the closed-form integral, though this requires numerical methods in practice.
Nullclines are curves in the phase plane where one component of velocity is zero. They divide the plane into regions with distinct flow directions and reveal the qualitative behaviour without solving the equations explicitly.
Prey nullclines (\(\dot{x} = 0\)): \(\quad x = 0 \quad\) or \(\quad y = \dfrac{\alpha}{\beta}\)
Predator nullclines (\(\dot{y} = 0\)): \(\quad y = 0 \quad\) or \(\quad x = \dfrac{\gamma}{\delta}\)
The non-trivial nullclines intersect at the coexistence equilibrium. In each quadrant formed by the nullclines, the vector field points in a consistent direction — this four-quadrant rotation around the coexistence point drives the cyclic oscillations.
Adjust the ecological parameters and initial conditions, then press Start to watch the coupled oscillation unfold. The left panel traces the trajectory through the phase plane; the right panel shows both populations over time.
The coloured nullclines divide the phase plane into four quadrants. Black arrows show the velocity field \((\dot{x}, \dot{y})\) at each point. Click anywhere on the canvas to launch a trajectory from that initial condition. The coexistence equilibrium (gold star) lies at the nullcline intersection.
The Lotka–Volterra framework extends far beyond ecology. Wherever two coupled quantities compete or co-operate with nonlinear interaction terms, structurally similar equations appear.
Fishery and Resource Management. The original motivation for Volterra's work was to explain oscillating fish catches in the Adriatic after World War I. Sustainable harvesting strategies must account for the natural cycles: over-fishing during a prey-population peak can collapse the whole system.
Epidemiology — SIR Models. The SIR compartment model (\(\dot{S} = -\beta SI\), \(\dot{I} = \beta SI - \gamma I\)) has exactly the Lotka–Volterra nonlinear coupling \(SI\). Engineers use this to size hospital capacity, design vaccination campaigns, and predict epidemic peaks.
Autocatalytic Chemical Reactions. In reaction kinetics, an autocatalytic step (\(A + B \rightarrow 2B\)) produces a concentration–time profile governed by Lotka–Volterra-type equations. The Brusselator and Oregonator (the chemical oscillator behind the Belousov–Zhabotinsky reaction) are direct extensions that exhibit true limit cycles.
Economic Competition. Two competing firms sharing a market can be modelled with Lotka–Volterra dynamics: one firm's growth stimulates the other's or suppresses it depending on the sign of the coupling. Phase portrait analysis identifies stable coexistence versus winner-takes-all outcomes.
Laser Physics. The rate equations coupling photon density and population inversion in a laser cavity are formally equivalent to the predator–prey equations, with photons as predators and excited atoms as prey. This phase-plane analysis explains the relaxation oscillations that appear when the laser switches on.
Immune System Dynamics. The interaction between a pathogen population and immune cells (B-cells or T-cells) follows predator–prey kinetics. This underpins pharmacokinetic models used in drug design to time immunosuppressants and antivirals.
| Concept | Equation | Notes |
|---|---|---|
| Prey dynamics | \(\dot{x} = \alpha x - \beta x y\) | Exponential growth minus predation losses |
| Predator dynamics | \(\dot{y} = \delta x y - \gamma y\) | Gain from predation minus natural mortality |
| Coexistence equilibrium | \((x^*, y^*) = \!\left(\dfrac{\gamma}{\delta},\;\dfrac{\alpha}{\beta}\right)\) | Non-trivial fixed point; centre type |
| Prey nullcline | \(y = \dfrac{\alpha}{\beta}\) (horizontal) | \(\dot{x} = 0\) for \(x \neq 0\) |
| Predator nullcline | \(x = \dfrac{\gamma}{\delta}\) (vertical) | \(\dot{y} = 0\) for \(y \neq 0\) |
| Conserved quantity | \(H = \delta x - \gamma \ln x + \beta y - \alpha \ln y\) | \(dH/dt = 0\); constant on each orbit |
| Linearised frequency | \(\omega_0 = \sqrt{\alpha\gamma}\) | Eigenvalue imaginary part at \((x^*, y^*)\) |
| Approximate period | \(T \approx \dfrac{2\pi}{\sqrt{\alpha\gamma}}\) | Valid for small-amplitude oscillations |
| Jacobian at \((x^*, y^*)\) | \(J^* = \begin{pmatrix} 0 & -\beta\gamma/\delta \\ \delta\alpha/\beta & 0 \end{pmatrix}\) | Eigenvalues \(\pm\,i\sqrt{\alpha\gamma}\) → centre |
A predator–prey system is modelled by the Lotka–Volterra equations with parameters:
\(\alpha = 1.0\ \text{yr}^{-1},\quad \beta = 0.10\ \text{km}^2\,\text{ind}^{-1}\,\text{yr}^{-1},\quad \delta = 0.05\ \text{km}^2\,\text{ind}^{-1}\,\text{yr}^{-1},\quad \gamma = 0.5\ \text{yr}^{-1}\)
(a) Find the coexistence equilibrium \((x^*, y^*)\).
(b) Verify that both \(\dot{x} = 0\) and \(\dot{y} = 0\) at this point.
(c) Estimate the period of small oscillations about the equilibrium.
Show Solution
(a) Coexistence equilibrium
From \(\dot{x} = x(\alpha - \beta y) = 0\) with \(x \neq 0\):
\[y^* = \frac{\alpha}{\beta} = \frac{1.0}{0.10} = 10\ \text{ind/km}^2\]
From \(\dot{y} = y(\delta x - \gamma) = 0\) with \(y \neq 0\):
\[x^* = \frac{\gamma}{\delta} = \frac{0.5}{0.05} = 10\ \text{ind/km}^2\]
\[\boxed{(x^*, y^*) = (10,\ 10)\ \text{ind/km}^2}\]
(b) Verification
\[\dot{x}\big|_{(10,10)} = \alpha x^* - \beta x^* y^* = 1.0(10) - 0.10(10)(10) = 10 - 10 = 0\ \checkmark\]
\[\dot{y}\big|_{(10,10)} = \delta x^* y^* - \gamma y^* = 0.05(10)(10) - 0.5(10) = 5 - 5 = 0\ \checkmark\]
(c) Period of small oscillations
\[\omega_0 = \sqrt{\alpha\gamma} = \sqrt{1.0 \times 0.5} = \sqrt{0.5} \approx 0.707\ \text{rad/yr}\]
\[T = \frac{2\pi}{\omega_0} = \frac{2\pi}{0.707} \approx \boxed{8.89\ \text{yr}}\]
A Lotka–Volterra system has parameters \(\alpha = 0.5\ \text{yr}^{-1}\), \(\beta = 0.02\ \text{km}^2\,\text{ind}^{-1}\,\text{yr}^{-1}\), \(\delta = 0.01\ \text{km}^2\,\text{ind}^{-1}\,\text{yr}^{-1}\), \(\gamma = 0.3\ \text{yr}^{-1}\).
At \(t = 0\) the populations are \(x(0) = 50\ \text{ind/km}^2\) and \(y(0) = 10\ \text{ind/km}^2\).
(a) Compute \(\dot{x}(0)\) and \(\dot{y}(0)\).
(b) Is the prey population increasing or decreasing? Is the predator population increasing or decreasing? Explain by locating the initial state relative to the nullclines.
Show Solution
(a) Initial rates
\[\dot{x}(0) = \alpha x(0) - \beta x(0)\,y(0) = 0.5(50) - 0.02(50)(10) = 25 - 10 = \boxed{+15\ \text{ind/km}^2/\text{yr}}\]
\[\dot{y}(0) = \delta x(0)\,y(0) - \gamma y(0) = 0.01(50)(10) - 0.3(10) = 5 - 3 = \boxed{+2\ \text{ind/km}^2/\text{yr}}\]
Both populations are increasing at \(t = 0\).
(b) Nullcline interpretation
The coexistence equilibrium is at:
\[x^* = \frac{\gamma}{\delta} = \frac{0.3}{0.01} = 30\ \text{ind/km}^2, \qquad y^* = \frac{\alpha}{\beta} = \frac{0.5}{0.02} = 25\ \text{ind/km}^2\]
The initial state \((50, 10)\) lies to the right of the predator nullcline \(x = 30\) (so \(\dot{y} > 0\): predators increase) and below the prey nullcline \(y = 25\) (so \(\dot{x} > 0\): prey increase). This is the bottom-right quadrant of the nullcline diagram, where both populations grow — consistent with the calculated rates.
For the Lotka–Volterra system with \(\alpha = 0.4\ \text{yr}^{-1}\), \(\beta = 0.02\ \text{km}^2\,\text{ind}^{-1}\,\text{yr}^{-1}\), \(\delta = 0.01\ \text{km}^2\,\text{ind}^{-1}\,\text{yr}^{-1}\), \(\gamma = 0.2\ \text{yr}^{-1}\):
(a) Evaluate the conserved quantity \(H = \delta x - \gamma\ln x + \beta y - \alpha\ln y\) at the initial state \((x_0, y_0) = (25, 15)\).
(b) Show that \(H\) has a minimum at the coexistence equilibrium \((x^*, y^*)\), confirming that \((x^*, y^*)\) is the global minimum of \(H\) and that orbits are closed.
Show Solution
(a) Evaluating H at (25, 15)
First identify the coexistence equilibrium:
\[x^* = \frac{\gamma}{\delta} = \frac{0.2}{0.01} = 20, \qquad y^* = \frac{\alpha}{\beta} = \frac{0.4}{0.02} = 20\]
Compute \(H(25, 15)\):
\[H = \delta x - \gamma\ln x + \beta y - \alpha\ln y\]
\[= 0.01(25) - 0.2\ln(25) + 0.02(15) - 0.4\ln(15)\]
\[= 0.25 - 0.2(3.2189) + 0.30 - 0.4(2.7081)\]
\[= 0.25 - 0.6438 + 0.30 - 1.0832 = \boxed{-1.177}\]
(b) Minimum at equilibrium
Take partial derivatives of \(H\) and set to zero:
\[\frac{\partial H}{\partial x} = \delta - \frac{\gamma}{x} = 0 \implies x = \frac{\gamma}{\delta} = x^*\]
\[\frac{\partial H}{\partial y} = \beta - \frac{\alpha}{y} = 0 \implies y = \frac{\alpha}{\beta} = y^*\]
The Hessian at \((x^*, y^*)\):
\[\mathbf{H}_{H} = \begin{pmatrix} \gamma/(x^*)^2 & 0 \\ 0 & \alpha/(y^*)^2 \end{pmatrix}\]
Both diagonal entries are strictly positive, so the Hessian is positive definite: \((x^*, y^*)\) is a strict global minimum of \(H\). Since \(H\) is constant on each trajectory, and its minimum value occurs at the equilibrium, every level set \(H = c > H_{\min}\) is a closed curve surrounding the equilibrium. This proves that all trajectories are periodic. \(\quad\square\)