{VERSION 5 0 "SUN SPARC SOLARIS" "5.0" }
{USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 0 255 0 0 1 2 1 0 0
1 0 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0
0 0 1 }{CSTYLE "2D Comment" 2 18 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }
{CSTYLE "" -1 256 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1
257 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 258 "" 0 1 0 0
0 0 0 1 0 0 0 0 0 0 0 1 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "hel
vetica" 1 12 0 0 0 1 1 2 2 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0
-1 0 }{PSTYLE "R3 Font 0" -1 256 1 {CSTYLE "" -1 -1 "Helvetica" 0 12
128 0 128 1 2 1 2 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }
{PSTYLE "R3 Font 2" -1 257 1 {CSTYLE "" -1 -1 "Courier" 0 11 0 128
128 1 2 1 2 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "
" 0 258 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 0 0
-1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 259 1 {CSTYLE "" -1 -1 "" 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE
"" 0 260 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 0 0
-1 -1 -1 0 0 0 0 0 0 -1 0 }}
{SECT 0 {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "
" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT 256 14 "Nonlinear.mws " }
{TEXT -1 61 " This Maple worksheet is designed to illustrate two pap
ers." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 134 "
May, RM 1974. Biological populations with nonoverlapping generations:
stable points, stable cycles and chaos. Science 186: 645-647. " }}
{PARA 0 "" 0 "" {TEXT -1 126 "May, RM & GF Oster. 1976. Bifurcations \+
and dynamic complexity in simple ecological models. American Naturali
st 110: 573-599." }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "
" 0 "" {TEXT -1 310 "May examined the behavior of a difference equatio
n version of the logistic equation, and found that it exhibited very c
omplex dynamics, depending upon the value of the growth rate `r'. He \+
found monotonic damping to an equilibrium, damped oscillations, stable
oscillations, and chaos. The equation he used was" }}{PARA 260 "" 0
"" {XPPEDIT 18 0 "N[t+1] = N[t]*exp(r*(1-N[t])" "6#/&%\"NG6#,&%\"tG\"
\"\"F)F)*&&F%6#F(F)-%$expG6#*&%\"rGF),&F)F)&F%6#F(!\"\"F)F)" }}{PARA
0 "" 0 "" {TEXT -1 196 "This equation can never have negative populati
on sizes, and has a carrying capacity of 1, like the dimensionless log
istic that we developed earlier in the course (look what happens when \+
N(t) = 1)." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "restart; with
(plots):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "timeplot:=NULL:
" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "for r from 1 to 3.0 by 0.2 do"
}}{PARA 0 "> " 0 "" {MPLTEXT 1 0 13 " n[0]:=0.8;" }}{PARA 0 "> " 0 "
" {MPLTEXT 1 0 24 " for t from 0 to 30 do" }}{PARA 0 "> " 0 ""
{MPLTEXT 1 0 34 " n[t+1]:=n[t]*exp(r*(1-n[t]));" }}{PARA 0 "> " 0
"" {MPLTEXT 1 0 8 " od;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 173 " ti
meplot:=timeplot,plot([ [[x,n[x]]$x=0..30], [x,r,x= -3..-1]], color=[r
ed, blue], thickness=2, xtickmarks=4, ytickmarks=4, title=cat(`N vs t \+
for r=`, convert(r, string)));" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od
:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1
26 "The following graph is an " }{TEXT 258 9 "animation" }{TEXT -1
406 " of the dynamics of the population at different values of `r'. T
he short blue line on the left side of the graph represents `r', and t
he red trajectory is the population size plotted as a function of time
. Note that the population shows logistic behavior at low values of r
, shows damped oscillations, stable 2-cycles, stable 4-cycles, 8-cycle
s and then chaos. The behavior is predicted by the plots of " }
{XPPEDIT 18 0 "N[t+8]" "6#&%\"NG6#,&%\"tG\"\"\"\"\")F(" }{TEXT -1 2 ",
" }{XPPEDIT 18 0 "N[t+4]" "6#&%\"NG6#,&%\"tG\"\"\"\"\"%F(" }{TEXT -1
6 ", and " }{XPPEDIT 18 0 "N[t+2]" "6#&%\"NG6#,&%\"tG\"\"\"\"\"#F(" }
{TEXT -1 4 " vs " }{XPPEDIT 18 0 "N[t]" "6#&%\"NG6#%\"tG" }{TEXT -1
149 " above. Compare this graph to the figures in May 1974. Then cha
nge the initial condition from n[0]:= 0.01 to n[0]=0.81; what changes \+
do you obseve?" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 ""
{TEXT -1 407 "To set the animation in play, click on the graph, and th
en use the play and stop buttons on the toolbar. The ->| button does \+
single frame advance, the << and >> decrease and increase the speed of
playback. The -> and <- buttons change the direction of playback. \+
The short purple line at the left side of the graph is the value of r
(read on vertical axis scale). Continuous loop play is also possible
." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "display([timeplot],ins
equence=true);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}
{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 447 "T
he bifurcation plot shows the stable points as a function of r. When \+
r is less than 2, there is a single stable point. When r reaches 2, t
he single stable point bifurcates into 2 stable points with a stable p
eriod-2 cycle. When r reaches 2.5 the two point cycle bifurcates into
a stable period-4 cycle with 4 stable points. This is Figure 8a of M
ay and Oster, who provide an explanation for the changes in behavior o
f the system as r changes." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0
17 "bifurcplot:=NULL:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "for r from
1 to 3.0 by 0.01 do;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 " n[0]:=0
.99;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 25 " for t from 0 to 70 do;"
}}{PARA 0 "> " 0 "" {MPLTEXT 1 0 34 " n[t+1]:=n[t]*exp(r*(1-n[t]))
;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 8 " od;" }}{PARA 0 "> " 0 ""
{MPLTEXT 1 0 95 " bifurcplot:=bifurcplot, plot( [ [r,n[x]]$x =40..70 ]
, color=black, style=point, symbol=POINT):" }}{PARA 0 "> " 0 ""
{MPLTEXT 1 0 3 "od:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "disp
lay([bifurcplot]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}
{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 91 "We
will consider equation 1 of May and Oster, which is the same equation
used by May 1974." }}{PARA 258 "" 0 "" {XPPEDIT 18 0 "N[t+1]" "6#&%
\"NG6#,&%\"tG\"\"\"F(F(" }{TEXT -1 5 " = F(" }{XPPEDIT 18 0 "N[t]" "6#
&%\"NG6#%\"tG" }{TEXT -1 1 ")" }}{PARA 0 "" 0 "" {TEXT -1 6 "where " }
}{PARA 259 "" 0 "" {TEXT -1 7 "F(N) = " }{XPPEDIT 18 0 "N[t] *exp(r*(1
-N[t]))" "6#*&&%\"NG6#%\"tG\"\"\"-%$expG6#*&%\"rGF(,&F(F(&F%6#F'!\"\"F
(F(" }}{PARA 0 "" 0 "" {TEXT -1 193 "This is analogous to the logistic
equation, but is better behaved, because it cannot predict negative p
opulation sizes. By deciding on the value of the growth rate `r', we \+
can plot a graph of " }{XPPEDIT 18 0 "N[t+1]" "6#&%\"NG6#,&%\"tG\"\"\"
F(F(" }{TEXT -1 8 " versus " }{XPPEDIT 18 0 "N[t]" "6#&%\"NG6#%\"tG" }
{TEXT -1 109 ", and see the shape of the function F(N). The red line i
s the function F(N), and the black line is a plot of " }{XPPEDIT 18 0
"N[t+1]" "6#&%\"NG6#,&%\"tG\"\"\"F(F(" }{TEXT -1 3 " = " }{XPPEDIT 18
0 "N[t]" "6#&%\"NG6#%\"tG" }{TEXT -1 53 ". This is figure 2a of May a
nd Oster, using r = 0.5." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 52
"plot([n*exp(0.5*(1-n)),n],n=0..2,color=[red,black]);" }}}{EXCHG
{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT
-1 1 " " }}{PARA 0 "" 0 "" {TEXT -1 456 "The intersections of F(N) wit
h the line N(t+1)=N(t) are the equilibria or fixed points, N*. The s
tability of the fixed points is easily determined because in this situ
ation, the eigenvalue of F at a fixed point N* is the slope of F at th
e intersection with the 45 degree line. If the eigenvalue is less tha
n 1 (slope <1), the fixed point is stable (attractor), if the eigenv
alue is greater than 1 (slope > 1), the fixed point is unstable (rep
ulsor)." }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 ""
{TEXT -1 472 "The analogous procedure can be used to determine the rel
ation between N(t+2) and N(t), or between N(t+4) and N(t). In these c
ases, if N(t+4)=N(t), there is a stable period-4 oscillation, and if \+
N(t+2) = N(t), there is a stable period-2 oscillation. The stability \+
of these fixed points is determined in the same way as described above
. The population at time t+4 is found by recursively applying the fun
ction F . (Maple uses %1 to abbreviate a repeated chunk of stuff.)" }}
}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "F:= n -> n*exp(0.5*(1-n)); \+
t:= 't'; " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "N[t+1]:= F(N[
t]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "N[t+2]:= F(N[t+1]);
" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "N[t+3]:= F(N[t+2]);" }}
}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "N[t+4]:= F(N[t+3]);" }}}
{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 699 "N
ext we illustrate the May & Oster cobweb plot method to find bifurcati
ons. Note that as the growth rate r increases, the slope of function \+
F(N) changes as does function F(F(N)). There are conditions where a s
ingle fixed point becomes 3 fixed points: an unstable point between tw
o stable points with oscillation period 2. When this occurs, there is
a `bifurcation' in the population process, and the population switche
s from a single stable population to a stable oscillation between the
two new fixed points. This process repeats as each of the stable po
ints bifurcates into 2 stable points with oscillation period 4, and r
epeats again, forming now 8 stable points with oscillation period 8."
}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 58 "p2_list:=NULL: p_list:=NU
LL: p4_list:=NULL: p8_list:=NULL:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0
32 "for r from 1.0 to 3.1 by 0.15 do" }}{PARA 0 "> " 0 "" {MPLTEXT 1
0 52 "F:= n -> n*exp(r*(1-n)); # modified logistic model " }}{PARA 0
"" 0 "" {TEXT -1 51 "Look at time 2 in the future to find 2 point cycl
es" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "n1:= F(n): n2:= F(n1): n3:= \+
F(n2):" }}{PARA 0 "" 0 "" {TEXT -1 51 "Look at time 4 in the future to
find 4 point cycles" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 49 "n4:= F(n3):
n5:= F(n4): n6:= F(n5): n7:= F(n6):" }}{PARA 0 "" 0 "" {TEXT -1 52
"Look at time 8 in the future to find 8 point cycles." }}{PARA 0 "> "
0 "" {MPLTEXT 1 0 11 "n8:= F(n7):" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0
114 "p2_list:= p2_list, plot([[n,n2,n=0..2], [n,n,n=0..2], [n,r,n=-0.3
..-0.15]], color=[red,black,plum], ytickmarks=4);" }}{PARA 0 "> " 0 "
" {MPLTEXT 1 0 132 "p4_list:=p4_list, plot([[n,n4,n=0..2], [n,n,n=0..2
], [n,n2,n=0..2],[n,r,n=-0.3..-0.15]], color=[blue,black,red,plum], yt
ickmarks=4);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 132 "p8_list:=p8_list,p
lot([[n,n8,n=0..3],[n,n4,n=0..3],[n,n,n=0..3],[n,r,n=-0.3..-0.15]], co
lor=[sienna,blue,black,plum], ytickmarks=4);" }}{PARA 0 "> " 0 ""
{MPLTEXT 1 0 3 "od:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA
0 "" 0 "" {TEXT -1 14 "The following " }{TEXT 257 10 "animations" }
{TEXT -1 147 " display the fixed points of the logistic process and th
eir stabilities. The two-point cycle graph is figure 6 in May and Oste
r. This graph plots " }{XPPEDIT 18 0 "N[t+2]" "6#&%\"NG6#,&%\"tG\"\"
\"\"\"#F(" }{TEXT -1 4 " vs " }{XPPEDIT 18 0 "N[t]" "6#&%\"NG6#%\"tG"
}{TEXT -1 40 " in red. The function is determined by " }{XPPEDIT 18
0 "N[t+2]" "6#&%\"NG6#,&%\"tG\"\"\"\"\"#F(" }{TEXT -1 4 "= F(" }
{XPPEDIT 18 0 "N[t+1]" "6#&%\"NG6#,&%\"tG\"\"\"F(F(" }{TEXT -1 8 ") = \+
F(F(" }{XPPEDIT 18 0 "N[t]" "6#&%\"NG6#%\"tG" }{TEXT -1 226 ")). Note
that the single stable point bifurcates into a stable 2-point cycle w
hen r > 2, as noted in the legend of Fig 6 in May and Oster. The pa
rameter r is indicated by a short plum line to the left of the vertica
l axis." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 58 "display([p2_list
],insequence=true,title=`2 point cycles`);" }}}{EXCHG {PARA 0 "> " 0 "
" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0
"" 0 "" {TEXT -1 17 "This graph plots " }{XPPEDIT 18 0 "N[t+4]" "6#&%
\"NG6#,&%\"tG\"\"\"\"\"%F(" }{TEXT -1 5 " vs " }{XPPEDIT 18 0 "N[t]"
"6#&%\"NG6#%\"tG" }{TEXT -1 21 " in blue and replots " }{XPPEDIT 18 0
"N[t+2]" "6#&%\"NG6#,&%\"tG\"\"\"\"\"#F(" }{TEXT -1 4 " vs " }
{XPPEDIT 18 0 "N[t] " "6#&%\"NG6#%\"tG" }{TEXT -1 99 " in red. Noti
ce how the 2-cycle stable points bifurcate into 4-cycle stable points \+
when r = 2.6." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 58 "display([p
4_list],insequence=true,title=`4 point cycles`);" }}}{EXCHG {PARA 0 ">
" 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}
{PARA 0 "" 0 "" {TEXT -1 17 "This graph plots " }{XPPEDIT 18 0 "N[t+8]
" "6#&%\"NG6#,&%\"tG\"\"\"\"\")F(" }{TEXT -1 4 " vs " }{XPPEDIT 18 0 "
N[t]" "6#&%\"NG6#%\"tG" }{TEXT -1 23 " in sienna and replots " }
{XPPEDIT 18 0 "N[t+4]" "6#&%\"NG6#,&%\"tG\"\"\"\"\"%F(" }{TEXT -1 5 " \+
vs " }{XPPEDIT 18 0 "N[t]" "6#&%\"NG6#%\"tG" }{TEXT -1 224 " in blue.
Note the number of crossing points of the mapping function and the 4
5 degree line. Each crossing point represents a fixed point that is e
ither stable or unstable, depending upon the slope of the mapping func
tion." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 58 "display([p8_list],
insequence=true,title=`8 point cycles`);" }}}{EXCHG {PARA 0 "> " 0 ""
{MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "
" 0 "" {TEXT -1 601 "Finally we use the F(N) vs N and N vs N plots to \+
produce a sort of phase plane equivalent for the plot of N vs t. On t
he vetical axis we have N(t+1) and on the horizontal N(t). The first \+
point plotted is (N[0], F(N[0])). The next value N[1] = F(N[0]) can be
found graphically by extending the horizontal line at level F(N[0]) a
cross to the 45 degree line. Using this position, which is N[1], on th
e horizontal axis, we move up (or down) to the curve to find N[2] = F(
N[1]). From here we again move across to the line, then up or down to \+
the curve, and so on. Try the following simple example first." }}}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "F:= n -> n*exp(r*(1-n));" }}
}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "n[0]:= 0.1; r:= 1.8; itera
tions:= 12;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "plotlist:= N
ULL: x:= n[0]: " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "for j from 1 to
iterations do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "y:= F(x): plotli
st:= plotlist, [x, y], [y, y]:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 6 "x:
= y;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" }}{PARA 0 "> " 0 ""
{MPLTEXT 1 0 83 "P:= plot([plotlist], color=black, thickness=2): C:= p
lot( \{F(n), n\}, n = 0 .. 2.0):" }}}{EXCHG {PARA 0 "> " 0 ""
{MPLTEXT 1 0 18 "display( \{P, C\} );" }}}{EXCHG {PARA 0 "> " 0 ""
{MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "
" 0 "" {TEXT -1 190 "Change n[0], and see what happens. Record the re
sults of your experiment! Next change the value of r and see what hap
pens for the same sequence of values of n[0] that you used previously.
" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "0 0 0" 0 }
{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }