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