The "Cobweb" Route to Chaos

    One of the first persons to study chaotic behavior in simple mathematical systems was Mitchell Feigenbaum.  In his book Chaos: Making a New Science, James Gleick describes how Feigenbaum was the first scientist to attempt to understand turbulent, non-linear behavior.  While at Los Alamos National Laboratory in the 1970's Feigenbaum started exploring non-linear systems by looking at the simplest non-linear mathematical equation that he could think of, a quadratic equation, y = f(x) = a x^2 + b x + c.

    One of the most important features of turbulent, non-linear systems is that they have a feed-back mechanism that leads to chaotic behavior.  Feigenbaum wanted to create a mathematical feed-back system based on a quadratic equation.  To do this he took some starting value for x, say x0.  Then, he evaluated the quadratic equation on x0 to get a y-value, call this y0 (=f(x0)).  The feed-back was accomplished by taking the y0 value and feeding it back into the equation as an x-value, i.e. set x1=y0 and find y1 = f(x1).  By repeating (or iterating) this process we get a sequence of x and y values as follows:

    We call the set of iterates x0, x1, x2, ... the orbit of the original point x0 under the iteration of the quadratic function f(x).

    It is clear that for the regular parabola, y=x^2, the iterates of x0 will go off to infinity if x0 is larger than 1 in absolute value and will go to zero if x0 is between -1 and 1.  We say that zero and infinity are attractors for this system.  That is, any choice of starting point x0 will move toward one of these atrractor points as we iterate f(x).  Feigenbaum wanted to study a simple quadratic where the orbit of a starting point would not "blow-up" to infinity.  What he decided to study was the quadratic y = r x (1-x).  Here r is a positive constant.  This equation is known as the Logistic Equation. It can be used to model  population growth with a limiting population.  In that model r would represent a growth rate for the population.

    Let's re-discover what Feigenbaum found about iterates of points using the logistic equation.  First, we have to create a geometric construction that models the logistic equation.  Start by opening up a new Euclidean Canvas and choosing "Show Axes" under the "Graph" menu.  (For a review of how to use the analytic and graph capabilities in Geometry Explorer look here. )

    To create a model for the logistic equation we first move the unit point to the right to get a larger interval to use for [0,1].  Then, we attach a point to this interval by creating a point on top of the segment between the origin and the unit point. Let's color it red so that we can identify it easily. Next, we measure the x-coordinate of this attached point using the "Measure" menu. Now, we need to create a geometric object that will serve as the r parameter in the logistic equation. One easy way to do this is by creating a segment and using its length as r.

    At this point we need to create the function that will serve as the y-value for the logistic equation. Select the segment k and the choose "Lenght" under the "Measure" menu to compute its length.  Then, pop up the Calculator box and use the measure just defined to create the expression 2*Length(k)*x*(1-x). (Remember that you double-click on a measure to add it to the current expression). Then, hit the "Evaluate" button and then the "Add to Canvas" button to add this new expression to the Canvas.  You will be asked to name this function -- just name it "f". Note: we use 2*Length(k)  instead of Length(k) in order to get a larger range of values for the growth parameter r in the logistic equation.

The function we just defined will be plotted in the Canvas.  Notice that as we change the length of segment k the graph will change in size.

   To iterate the function starting with point x0 we must first select point x0 and the graph.  After selecting both of these objects the menu option "Iterate Function from Point" under the "Graph" menu will be enabled.  After clicking on this menu item a dialog box will pop up asking for the number of iterations. Let's pick 20.

   When we iterate the function on x0 what happens is the following: a point is plotted on f(x) from the x-coordinate of x0 and a segment is created joining these two points. Then, a point is created along y=x from the function point and a segment joins these two points.  Then, the process begins again from this point to the function, to y=x, to the function, etc.  Let's move x0 a bit to see more of these iterations.

   If we now move x0 back and forth along the x-axis from the origin to the unit point we would see that the iterates stay in a certain region and seem to mostly bounce back and forth between two values on the x-axis. We call this a 2-cycle.  If we change the length of segment k we notice some amazing behavior for the iterates. When k is about 1.83 (2k about 3.63) we get a chaotic collection of orbits.






   If we shrink k so that 2k is about 3.5 we see a very orderly orbit of iterates that appear to bounce back and forth between four y-values.  We would call this orbit a 4-cycle.  See if you can find 8-cycles, 3-cycles, 6-cycles.  A very nice introduction to the mathematics of these iterates can be found in the book  Does God Play Dice?  The Mathematics of Chance  by Ian Stewart.