The Ricker Model 

If you click on !!! (the menu bar at the top) maple will execute all commands.  

You can also enter each command as you go along  reading this document. You may enter your own commands at any time and place in this document. 

 

> with(plots); -1
 

> `:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
`:=`(logi, proc (r, K) option operator; description
 

The projection function for the Ricker model 

> display(plot((ricker(.5, 100))(P), P = 0 .. 400, F = 0 .. 150), plot((ricker(.8, 100))(P), P = 0 .. 400, F = 0 .. 150)); 1
display(plot((ricker(.5, 100))(P), P = 0 .. 400, F = 0 .. 150), plot((ricker(.8, 100))(P), P = 0 .. 400, F = 0 .. 150)); 1
 

Plot_2d
 

and the population dynamics 

> display([dynplotfilm(ricker(0.5e-1, 100), 2, 200), dynplotfilm(ricker(0.5e-1, 100), 130, 200)]); 1
 

Plot_2d
 

The population dynamics for a higher value of r 

> dynplotfilm(ricker(2.1, 100), 2, 200); 1
 

Plot_2d
 

Ricker models with various values of the parameter r 

> display(seq(dynplot(ricker(`+`(1, `*`(0.5e-1, `*`(s))), 100), 2, 100, 0, 400), s = 0 .. 50), insequence = true); 1
 

Plot_2d
 

There are two equilibria  when r<2.  

When r<2, 0 is an unstable equilibrium, and the carrying capacity K is a stable equilibrium. We can see this by computing 

> evalf(stab1(ricker(1.8, 100))); 1
 

[0., 6.049647464], [0., 6.049647464] (1)
 

or by looking at a cobweb diagram 

> display(cobweb(ricker(1.8, 100), 5, 20, 0, 150), cobweb(ricker(1.8, 100), 120, 20, 0, 150)); 1
 

Plot_2d
 

where we see that  all population orbits converge to the carrying capacity  

> seq(iterate(ricker(1.8, 100), P0, 200), P0 = [1, 5, 6, 150, 250]); 1
 

100.0000000, 100.0000000, 100.0000000, 100.0000000, 100.0000000 (2)
 

Let us now consider the case where r>2. 

We look for a stable 2-cycle for r= 

> `+`(1, `*`(25, 0.5e-1)); 1
 

2.25 (3)
 

which is shown in frame 25 above. 

> `:=`(F, ricker(2.25, 100)); 1
 

proc (P) options operator, arrow; `*`(exp(`*`(2.25, `*`(`+`(1, `-`(`/`(`*`(P), `*`(100))))))), `*`(P)) end proc (4)
 

We first try to solve the equation FF(P)=P, 

> evalf(stab2(F)); 1
 

[0., 90.01713129], [0., 90.01713129] (5)
 

Well, it seems to be beyond maple's powers to solve the equation FF(P)=P!  

Maybe we can solve graphically 

Let us look at some cobweb diagrams for F^2  

> display(cobweb(proc (P) options operator, arrow; F(F(P)) end proc, 10, 20, 0, 200), cobweb(proc (P) options operator, arrow; F(F(P)) end proc, 30, 20, 0, 200), cobweb(proc (P) options operator, arrow;...
display(cobweb(proc (P) options operator, arrow; F(F(P)) end proc, 10, 20, 0, 200), cobweb(proc (P) options operator, arrow; F(F(P)) end proc, 30, 20, 0, 200), cobweb(proc (P) options operator, arrow;...
 

Plot_2d
 

It looks as if there are  stable 2-cycles near 50 and 150. We approximate this 2-cycle by orbits: 

> seq(iterate(proc (P) options operator, arrow; F(F(P)) end proc, P0, 300), P0 = [10, 30, 80, 180]); 1
 

155.1189163, 44.88108371, 44.88108382, 155.1189162 (6)
 

and see that we really arrived at a 2-cycle 

> orbit(F, %[1], 6); 1
 

155.1189163, 44.88108371, 155.1189163, 44.88108371, 155.1189163, 44.88108371 (7)
 

We check if it is stable 

> evalf(subs(P = 44.88108382, diff(F(F(P)), P))); 1
 

0.2446444565e-1 (8)
 

> evalf(subs(P = 155.1189162, diff(F(F(P)), P))); 1
 

0.24464447e-1 (9)
 

Yes, the 2-cycle  (44.88, 155.11) is stable. 

> {seq(evalf[3](iterate(ricker(1.1, 100), P0, 500)), P0 = [10, 20, 30, 45, 50])}; 1
 

{99.7, 99.9, 100.} (10)
 

The stable orbits of the Ricker model can be illutstrated in the bifurcation diagram 

> pointplot([seq(seq([`+`(1.8, `*`(0.5e-2, `*`(i))), orbit(ricker(`+`(1.8, `*`(0.5e-2, `*`(i))), 100), 80, 250)[j]], j = 230 .. 250), i = 1 .. 240)], style = point, color = blue); 1
pointplot([seq(seq([`+`(1.8, `*`(0.5e-2, `*`(i))), orbit(ricker(`+`(1.8, `*`(0.5e-2, `*`(i))), 100), 80, 250)[j]], j = 230 .. 250), i = 1 .. 240)], style = point, color = blue); 1
 

Plot_2d
 

>
 

>
 

>
 

>