Re: newbie: programmatic sequence of plots?
- To: mathgroup at smc.vnet.net
- Subject: [mg96962] Re: newbie: programmatic sequence of plots?
- From: Albert Retey <awnl at gmx-topmail.de>
- Date: Sat, 28 Feb 2009 06:42:31 -0500 (EST)
- References: <go0j4b$n0o$1@smc.vnet.net> <go31og$fga$1@smc.vnet.net> <go8hs9$kvm$1@smc.vnet.net>
Tom Roche wrote:
> Sjoerd C. de Vries Wed, 25 Feb 2009 09:05:27 +0000 (UTC)
>> Loops themselves only have a null return value.
>
> Doh! I was assuming ListPlot would have a "side effect."
>
> Albert Retey Wed, 25 Feb 2009 09:06:32 +0000 (UTC)
>> return a list of these plots additionaly or instead of just
>> printing them, so that you can use ListAnimation or TabView or
>> whatever you like for displaying them.
>
> And the way to do that is
>
> "m.g." Wed, 25 Feb 2009 09:07:28 +0000 (UTC)
>> Clear[a, y, y0, nRecurr, yinit, yinc, yfinal];
>> a = 3.5;
>> nRecurr = 50;
>> yinit = 0.1;
>> yinc = 0.01;
>> yfinal = 0.2;
>> out = {}; (* modification here *)
>> For[y0 = yinit, y0 <= yfinal, y0 += yinc,
>> AppendTo[out, (* modification here *)
>> ListPlot[
>> RecurrenceTable[{y[n + 1] == a y[n] (1 - y[n]), y[0] == y0},
>> y, {n, 1, nRecurr}]]];
>> ];
>> out (* modification here *)
>
> So I modified that to do
>
> For[y0 = yinit, y0 <= yfinal, y0 += yinc,
> AppendTo[out,
> ListPlot[
> RecurrenceTable[{y[n + 1] == a y[n] (1 - y[n]), y[0] == y0},
> y, {n, 1, nRecurr}], Joined -> True
> ]
> ];
> ];
> ListAnimate[out]
>
> which is even better than printing a list of static plots.
just another suggestion for improvement: In Mathematica loops are often
only the second best solution, and using AppendTo within a loop is
rather inefficient (probably not a problem in this example).
I think this is close to what you would use after using Mathematica for
a while:
plotlst = Table[
ListPlot[
RecurrenceTable[{y[n + 1] == a y[n] (1 - y[n]), y[0] == y0},
y, {n, 1, nRecurr}],
Joined -> True
],
{y0, yinit, yfinal, yinc}
];
ListAnimate[plotlst]
(I haven't tested the code, but think it should work)
hth,
albert