Rename *ll* and *ul* to ll and ul in make-defint-assumptions
[maxima.git] / archive / books / schelter / chaos.bk
blobacfcf09ad12eabdd09838f744e6ed2811f48eedd
1 \x06\x01\x19\x16\x05
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
3                  Chaos
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
14               "Click Here First";
16        iterate_eqn(un,form,initial,beg,m):= (
17        kill(f,h),
18        define(h(n),sublis([un=f[n]],form)),
19        f[n]:=h(n-1),
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",
25                  "YUnitText: Un"],
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
33 two values.
35    xgraph_curves([
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))
38      ]);
40 Notice how the 3.65 equation becomes chaotic!!
42    xgraph_curves([
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))
47      ]);
50    xgraph_curves([
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
64                 u0 =.300
65 and the second  u0 =.305
66 Below we plot the initial values to see the instability
68    xgraph_curves([
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))
71        ]);
74 Here we vary the 'ro' factor. 
76    xgraph_curves([
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))
80        ]);
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):=
91         block([y:initial],
92         kill(f,h),
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)]);
105 Exercises:
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?