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:

http://en.wikipedia.org/wiki/Lotka-Volterra_equation

http://en.wikipedia.org/wiki/Lotka-Volterra_inter-specific_competition_equations