MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

RE: insect population dynamics

  • To: mathgroup at smc.vnet.net
  • Subject: [mg24614] RE: [mg24590] insect population dynamics
  • From: "David Park" <djmp at earthlink.net>
  • Date: Fri, 28 Jul 2000 17:23:50 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Mark,

You can quickly generate numerical solutions without using RSolve. Here are
your equations in definition form. It was necessary to reindex to get proper
definitions. Also I used dynamic programming (Section 2.4.9 in the Book) so
that the functions would remember their values and not continually have to
recalculate.

a[0] := 25;
b[0] := 10;
a[n_] := a[n] =
   E^(0.63*(1 - 1/50*
         a[-1 + n]) -
      0.068*b[-1 + n])*
    a[-1 + n]
b[n_] := b[n] =
   (1 - E^(-0.068*b[-1 + n]))*
    a[-1 + n]

This calculates a set of data points for the a and b populations for times 0
to 100.

{adata, bdata} = Transpose[
    Table[{{i, a[i]},
      {i, b[i]}}, {i, 0,
      100}]];

This plots the a population and data points versus time:

Block[{$DisplayFunction = Identity},
   apoints = ListPlot[adata, PlotJoined -> False,
      Prolog -> {AbsolutePointSize[4]}];
    aplot = ListPlot[adata, PlotJoined -> True]];
Show[apoints, aplot, ImageSize -> 500, Frame -> True,
   FrameLabel -> {"period", "insects"}, PlotRange -> {0, 35},
   PlotLabel -> "a Population"];

This plots the b population and data points versus time:

Block[{$DisplayFunction = Identity},
   bpoints = ListPlot[bdata, PlotJoined -> False,
      Prolog -> {AbsolutePointSize[4]}];
    bplot = ListPlot[bdata, PlotJoined -> True]];
Show[bpoints, bplot, ImageSize -> 500, Frame -> True,
   FrameLabel -> {"period", b}, PlotRange -> {0, 20},
   PlotLabel -> "b Population"];

This plots the two populations on the same plot with different colors.

Block[{$DisplayFunction = Identity},
   aplot = ListPlot[adata, PlotJoined -> True, PlotStyle ->
       RGBColor[0, 0, 1]]; bplot = ListPlot[bdata, PlotJoined -> True,
      PlotStyle -> RGBColor[1, 0, 0]]];
Show[aplot, bplot, ImageSize -> 500, Frame -> True,
   FrameLabel -> {"period", "insects"}, PlotRange -> {0, 35},
   PlotLabel -> "Insect Polulations, a Blue, b Red"];

David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/


> -----Original Message-----
> From: Mark Hunter [mailto:mhunter at ecology.uga.edu]
To: mathgroup at smc.vnet.net
>
> I'm trying to use mathematica to run insect population models.  I'm new
> to the system, and wolfram support suggested that I post my question
> here.
>
> The models are simple predator-prey models.  They are non-linear
> simultaneous difference equations.  I've tried using RSolve, but it
> doesn't seem to handle the non-linearity.  Is there a way of using a
> Do-Loop for the same kind of thing?  A simple example of the model that
> I tried is:
>
> RSolve[{a[n + 1] == a[n]*Exp[0.63((1 - a[n]/50)) - 0.068b[n]],
>       b[n + 1] = a[n]*(1 - Exp[-0.068*b[n]]), a[0] == 25,
>       b[0] == 10}, {a[n], b[n]}, n]
>
> I want an output for variables a and n at time n, n+1, etc.
>
> I'd be most grateful for any advice that you can offer, and please don't
> underestimate my current level of ignorance.
>
> Many thanks,
>
> Mark Hunter
>
>



  • Prev by Date: Re: A strange bug in Solve
  • Next by Date: reporting solution
  • Previous by thread: Re: insect population dynamics
  • Next by thread: Re: can Mathematica use dual processors?