Foxes and rabbits
Tonight's idea
Rabbits \(R(t)\) and foxes \(F(t)\). Alone, rabbits breed: \(R' = aR\). Alone, foxes starve: \(F' = -cF\). Meetings happen at a rate proportional to \(RF\) (twice the rabbits, twice the meetings), and each meeting is bad for rabbits and good for foxes:
\(R' = aR - bRF, \qquad F' = -cF + dRF.\)
These are the Lotka–Volterra equations; \(a, b, c, d\) are positive constants and the prime means \(d/dt\). There is no formula for \(R(t)\), but you can read the equations without solving them.
Equilibrium. Nothing moves when both derivatives vanish: \(R' = R(a - bF)\) and \(F' = F(dR - c)\). Apart from extinction, \((0, 0)\), that needs \(F = a/b\) and \(R = c/d\). Check: at \(R = c/d\), \(F = a/b\), \(R' = \tfrac{c}{d}(a - a) = 0\) and \(F' = \tfrac{a}{b}(c - c) = 0\).
Nullclines. Plot \(F\) against \(R\): the phase plane, where time is not an axis and each solution is a curve. On the vertical line \(R = c/d\) foxes are momentarily steady; on the horizontal line \(F = a/b\) rabbits are. The lines cut the plane into four quadrants. Right of \(R = c/d\) there are enough rabbits for foxes to grow; above \(F = a/b\) there are too many foxes for rabbits. So the motion is anticlockwise: more rabbits, then more foxes, then fewer rabbits, then fewer foxes, and round again.
Watch one: \(a = 1\), \(b = 0.02\), \(c = 0.5\), \(d = 0.01\)
Equilibrium: \(R = c/d = 50\), \(F = a/b = 50\). Start with 80 rabbits and 30 foxes. Then \(R' = 80 - 0.02 \times 80 \times 30 = 32\) and \(F' = -15 + 0.01 \times 80 \times 30 = 9\): both rising, so the point moves up and right, as the figure's arrow shows. Following the equations numerically (a tiny step in the direction \((R', F')\), repeated) traces the outer loop: rabbits swing between about 19 and 104, foxes between 26 and 86, and the point is back at its start after about 9.3 time units.
Drag the rates and click a start point: mathdetours.com/demos/lotka.html. The SIR epidemic is a cousin with three populations and no loop.
Your turn
Take \(a = 2\), \(b = 0.04\), \(c = 1\), \(d = 0.01\) throughout.
- Find the non-zero equilibrium, and check by substitution that both \(R'\) and \(F'\) are zero there.
- Compute \(R'\) and \(F'\) at \((150, 20)\) and at \((50, 80)\). Which way is each point moving, and in which quadrant of the nullcline picture is it?
- Euler's method: from \((150, 20)\) with step \(h = 0.1\), set \(R_{\text{new}} = R + hR'\) and \(F_{\text{new}} = F + hF'\). Take two steps. (The demo uses a better rule and a tiny step.)
- Divide the rabbit equation by \(R\): \((\ln R)' = R'/R = a - bF\). Integrate over one loop of period \(T\); the left side returns to its start. Deduce the average number of foxes over a cycle, then of rabbits. Now hunters remove a fraction \(h\) of both species per unit time: \(R' = (a - h)R - bRF\), \(F' = -(c + h)F + dRF\). What happens to the averages?
Stretch: why the loops close
Let \(V = dR - c\ln R + bF - a\ln F\). Use the chain rule to show that \(dV/dt = 0\) along every solution. Why does that make each orbit a closed loop rather than a spiral?
Answers
- \(R = c/d = 100\), \(F = a/b = 50\). \(R' = 2(100) - 0.04(100)(50) = 200 - 200 = 0\); \(F' = -50 + 0.01(100)(50) = -50 + 50 = 0\).
- At \((150, 20)\): \(R' = 300 - 120 = 180\), \(F' = -20 + 30 = 10\). Both rising: the point moves right and slightly up. It is below \(F = 50\) and right of \(R = 100\), the bottom-right quadrant. At \((50, 80)\): \(R' = 100 - 160 = -60\), \(F' = -80 + 40 = -40\). Both falling: down and to the left, in the top-left quadrant. Together these fix the anticlockwise sense.
- Step 1: \(R = 150 + 0.1 \times 180 = 168\), \(F = 20 + 0.1 \times 10 = 21\). Step 2: \(R' = 336 - 141.12 = 194.88\), \(F' = -21 + 35.28 = 14.28\), so \(R = 187.49\), \(F = 22.43\).
- Integrating \((\ln R)' = a - bF\) from 0 to \(T\): \(0 = aT - b\int_0^T F\,dt\), so the average of \(F\) is \(a/b = 50\). Likewise \((\ln F)' = -c + dR\) gives average \(R = c/d = 100\): the averages are the equilibrium values, whatever the loop. With hunting, replace \(a\) by \(a - h\) and \(c\) by \(c + h\): average foxes fall to \((a - h)/b\) and average rabbits rise to \((c + h)/d\). Culling both species helps the prey. Volterra built the model to explain a version of this puzzle in fishing records.
Stretch. \(\dfrac{dV}{dt} = \left(d - \dfrac{c}{R}\right)R' + \left(b - \dfrac{a}{F}\right)F' = (dR - c)(a - bF) + (bF - a)(dR - c) = 0\). So every solution stays on one level curve of \(V\). \(V\) has a single minimum at \((c/d, a/b)\) and climbs to infinity towards each axis and far away, so its level curves are closed rings around the equilibrium, and the solution runs round its ring forever. The cycles never damp out in this model; real populations, with crowding and chance, do.