2 ((face (maxima-eval-insert 3440 3441) (maxima-eval 372 860 1007 1166 1215 1508 1510 1598 1664 1804 2139 2305 2339 2564 2824 3440)) (book-command-arg))
\f
5 We look at the logistics growth equation
7 U[n+1] = ro U[n] (1 - U[n])
9 An initial value of u[0] and a value for ro, determine the behavior.
10 However as we shall see in some ranges of ro the growth goes to
11 one level for large n, and in some 2 or more levels. Finally for
12 some values of ro the value of u[n] is really chaotic for large
16 iterate_eqn(un,form,initial,beg,m):= (
18 define(h(n),sublis([un=f[n]],form)),
20 f[0]:initial, for i:0 thru beg do f[i],
21 create_list([i,f[i]],i,beg,m));
22 label(x,y):=cons(concat("\"",x),y);
23 plot_points(un,form,initial,beg,m):=
24 append(["NoLines: True","LargePixels: true","XUnitText: N",
26 iterate_eqn(un,form,initial,beg,m));
31 for ro=2.8 we have only one stable value, while for ro=3.3 there
32 are 2 values for large N. The population oscillates between these
36 label("ro=2.8", plot_points(Un, 2.8*Un*(1-Un), .4,0,400)),
37 label("ro=3.3", plot_points(Un, 3.3*Un*(1-Un), .4,0,400))
40 Notice how the 3.65 equation becomes chaotic!!
43 label("ro=3.65", plot_points(Un, 3.65*Un*(1-Un), .5,0,400)),
44 label("ro=2.8", plot_points(Un, 2.8*Un*(1-Un), .5,0,400)),
45 label("ro=3.1", plot_points(Un, 3.1*Un*(1-Un), .5,0,400)),
46 label("ro=3.3", plot_points(Un, 3.3*Un*(1-Un), .5,0,400))
51 label("ro=3.65", plot_points(Un, 3.58*Un*(1-Un), .5,0,400))]);
55 Let us graph several close to ro = 3.60 and see what happens
57 One_ro(ro):=label(concat("ro=",ro),plot_points(un,ro*un*(1-un),.5,0,400));
58 for i:-4 thru 4 do xgraph_curves([one_ro(3.60+i*.02)]);
60 Below we plot including the lines joining the points, the equation
61 with two different starting positions. Notice how the following
62 equations agree through about n = 15 and then disagree radically! The
63 first has initial value
65 and the second u0 =.305
66 Below we plot the initial values to see the instability
69 label("U0=.30",iterate_eqn(Un, 3.65*Un*(1-Un), .3, 0,20)),
70 label("U0=.305",iterate_eqn(Un, 3.65*Un*(1-Un), .305, 0,20))
74 Here we vary the 'ro' factor.
77 label("ro=.8",iterate_eqn(Un, .8*Un*(1-Un), .3, 0,20)),
78 label("ro=1.5",iterate_eqn(Un, 1.5*Un*(1-Un), .3,0, 20)),
79 label("ro=2.5",iterate_eqn(Un, 2.5*Un*(1-Un), .3, 0,20))
83 Below we see at what values of 'ro' the the chaos begins by plotting
84 'ro' on the x axis and plotting only the values between 30 and 80 on
85 the y axis. When you get the plot, you may zoom in on a particular
86 portion to see a better separation of the dots.
90 iterate_eqn1(un,rovalue,form,initial,beg,m):=
93 define(h(w),sublis([ro=rovalue,un=w],form)),
94 for i:1 thru beg do y:h(y),
95 create_list([rovalue,y:h(y)],i,beg,m)); ans:[];
96 /* do the plot from ro = romin to romax using 100 steps. */
97 (romin:2.4,romax:3.9)$
98 for rovalue:romin thru romax step (romax-romin)/100 do
99 (ans:append(iterate_eqn1(un,rovalue,ro*Un*(1-Un), .4,40,90),ans));
100 xgraph_curves([append(["XUnitText: ro","YUnitText: Un",
101 "NoLines: True","LargePixels: true"],ans)]);
107 1) In the logistics equation where `Un' is plotted against `Ro', you see
108 a large bifurcation and then two smaller ones. Try zooming in on
109 one of the smaller ones, using a rectangle to make it look like the
110 large ones. Can you see smaller ones coming out? Replot with
111 more points using a smaller range on the ro axis [change 2.4 and 3.9].
112 Turn in the large plot and the smaller one.
114 2) Do you think the initial value alters the eventual picture, or
115 whether there are bifurcations at a particular 'ro'? If you find
116 one plot it. Where would be a likely place to look?