The Azimuth Project
Experiments in predator-prey with Sage



I want to showing an easy way of doing predator-prey modeling in Sage. Right now it is a dimensionless version and one version which is the competitive Lotka-Volterra.


Original Lotka-Volterra

This is the original Lotka-Volterra phase map for a non-dimensional form. This was posted on Marshall Hampon on the site. The original Lotka-Volterra equations has many coarse “flaws” and has also been modified over time as we’ll see below. Dimensionless format of Lotka-Volterra. The default for Sage ode_solver() is to use runga-kutta-felhberg (4,5) to find solutions

Plot and Code


This is the phase plot for prey on the x-axis and predator on the y-axis.

Interactive and more realistic Lotka-Volterra

We first add a parameter g which is used in the to control the effect of the growth of the number of predator. For g=1 I got a similar plot as the first one above.

def lv(g,k=None):
   Tg = ode_solver()
   Tg.function = lambda t, y: [y[0]*(1 - y[1]), -g*y[1] + y[0]*y[1]]
   sol_lines = Graphics()
   for i in srange(0.1,1.1,.2):
      y = Tg.solution
      sol_lines += line([x[1] for x in y], rgbcolor = (i,i,0))
   return sol_lines

def lv_explorer(gamma = (0.,1.,0.1)):
    #html("equilibrium points are is %.2f" % k)

Try to see what happens for small values of g. Also see if you can find a way to show time plots for predator and prey in the same plot.

Here is my plot of varying g:

varying gamma

Next step

We will add some better model of growth and look at cases where Lotka-Volterra might lead to Hopf bifurcation and also see if we can add the Allee effect.


category: experiments