For this homework in Computational Physics, I have examined the Lotka-Volterra equations which describe the interplay between a predator and its prey. For example, if we take foxes (F) and rabbits (R), the Lotka-Volterra differential equations are dF/dt = a*F*R - b*F and dR/dt = c*R - d*F*R.
a expresses how many foxes can live off of the rabbits, whereas b represents how many die off naturally. c represents how quickly rabbits reproduce and d is how many rabbits get eaten by foxes. For the purposes of my simulation, I chose a = 0.0004, b = 0.08, c = 0.225 and d = 0.015.
We can calculate the fixed points for this differential equation by setting dF/dt = 0 and dR/dt = 0, which gives us F = 0, R = 0 (which is not very interesting and shall be ignored) and F = 15, R = 200.
Now, using a fourth order Runge-Kutta algorithm to solve the differential equations (code here), I will use a 5000 step model to see how the number of foxes and rabbits vary depending upon their initial populations. I shall use 5 different starting points in the phase space, (F, R) = (5, 100), (8,120), (10, 150), (13, 180) and (15, 200). You can look at the resulting behavior in the figure below.
One of the limitations of this model is that the rabbits have an unlimited supply of food. More realistic models can take this into account by imposing a maximum number of rabbits m that can survive in the area being studied. For my example, I chose m = 500.
The differential equations are now dF/dt = a*F*R - b*F and dR/dt = c*R*(m - R)/m - d*F*R. Note that dF/dt did not change but that dR/dt did. This is because if foxes are left alone, without any rabbits to eat, they will die out, whereas if rabbits are left alone without foxes, they would have grown exponentially in number before, whereas now they will increase in population up to a maximum of 500.
We can again calculate the fixed points for this differential equation (with the same a, b, c, d by setting dF/dt = 0 and dR/dt = 0, which gives us three solutions: F = 0, R = 0, F = 0, R = 500 (both of which are not very interesting and shall also be ignored) and F = 9, R = 200.
Now, I shall again use a fourth order Runge-Kutta algorithm to solve the differential equations and a 5000 step model (code here) to see how the number of foxes and rabbits vary depending upon their initial populations. I shall use 5 different starting points in the phase space, (F, R) = (5, 90), (6,120), (7, 150), (8, 180) and (15, 200). You can look at the resulting behavior in the figure below.
We can see that the equilibrium point (9, 200) acts as a very strong attractor in the phase-space. Clearly, no matter where you start (with positive F and R), you will clearly approach equilibrium.
Since we know that animal populations in nature do oscillate, as seen in the results in the first part above, and that food supplies are not unlimited, as modeled in the second case, we must conclude that a more complex set of differential equtions must be used to correctly model predator-prey relations.
For more information, visit these sites: