Re: Cobweb Plot
- To: mathgroup at smc.vnet.net
- Subject: [mg27537] Re: [mg27494] Cobweb Plot
- From: Tomas Garza <tgarza01 at prodigy.net.mx>
- Date: Sat, 3 Mar 2001 03:40:20 -0500 (EST)
- References: <200103010853.DAA19795@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
A possibility, very much along the functional approach of Mathematica's, is
as follows. First, define the function whose convergence you want to study,
say g[x] (notice the square brackets). I propose, as an example,
In[1]:=
g[x_] = 2 x^2 - 1;
since the one you mention, 2x * (1- x), doesn't exhibit the "cobweb"
appearance you'd like to see. Then use the following function, which has as
arguments "start", the starting point, and "n", the number of iterations of
g (I would rather use FixedPointList, but NestList will do):
In[2]:=
cobweb[start_, n_] :=
Module[{s = NestList[g, start, n], pointsOnGraph, pointsOnDiagonal},
pointsOnGraph = Drop[{Drop[s, -1], Rest[s]} // Transpose, -1];
pointsOnDiagonal =
Prepend[Partition[Drop[Rest[Flatten[pointsOnGraph]], -1], 2], {start,
start}];
Show[Graphics[
Line @@ {Partition[
Flatten[Transpose[{pointsOnDiagonal, pointsOnGraph}]], 2]}],
Epilog -> {{Hue[1], PointSize[0.02], Point[{start, start}]},
Line[{{Min[s], Min[s]}, {Max[s], Max[s]}}]}, Axes -> True,
AxesOrigin -> {0, 0},
PlotRange -> {{If[Min[s]<0,Min[s],0], Max[s]}, {If[Min[s]<0,Min[s],0],
Max[s]}}]]
Try, for example, 0.321 as starting point, with n = 20. The starting point
appears in red on the diagonal (0.321, 0.321).
Tomas Garza
Mexico City
----- Original Message -----
From: "Jon Joseph" <pokemon at tds.net>
To: mathgroup at smc.vnet.net
Subject: [mg27537] [mg27494] Cobweb Plot
> I have been experimenting with chaotic systems and have been trying to
> produce a "Cobweb Plot". A description of this type of plot, taken from
> "CHAOS An Introduction to Dynamical Systems" by Alligood, Sauer, Yorke, is
>
> "A cobweb plot illustrates convergence to an attracting fixed point of
> g(x)=2x(1-x). Let x0=0.1 be the initial condition. Then the first iterate
is
> x1=g(x0)=0.18. Note that the point (x0,x1) lies on the function graph, and
> (x1,x1) lies on the diagonal line. Connect these points with a horizontal
> dotted line to make a path. Then find x2=g(x1)=0.2952, and continue the
> path with a vertical dotted line to (x1, x2) and with a horizontal dotted
> line to (x2, x2). An entire orbit can be mapped out this way."
>
> I can create the data in a procedural program and then plot the list that
> results. Can anyone think of a more elegant, Mathematica oriented,
> approach? Thanks in advance
>
> Dr. Jon Joseph
> VP of Advanced Technology
> Nicolet Biomedical
> 5225 Verona Road
> Madison WI 53711
> jjoseph at nicoletbiomedical.com
>
>
- References:
- Cobweb Plot
- From: "Jon Joseph" <pokemon@tds.net>
- Cobweb Plot