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
>
>