Re: newbie: programmatic sequence of plots?
- To: mathgroup at smc.vnet.net
- Subject: [mg96817] Re: newbie: programmatic sequence of plots?
- From: Albert Retey <awnl at gmx-topmail.de>
- Date: Wed, 25 Feb 2009 04:07:03 -0500 (EST)
- References: <go0j4b$n0o$1@smc.vnet.net>
Tom Roche wrote: > How to get a programmatic sequence of plots? > > As advertised by the Subject:, I'm new to Mathematica (specifically > 7.0.0 for Students for 32-bit Windows on XP Pro) so please excuse any > lapses in terminology. I'd also appreciate pointers to specific docs > rather than just an RTFM. > > Since I'm currently unable to model the logistic map y=a y (1-y) (see > previous post) I'm trying to do a series of plots of it, to see how > behavior changes over time. I can get a plot of a single instance with > > Clear[a,y,y0,nRecurr]; > a=3.5; > y0=0.4; > nRecurr=50; > ListPlot[ > RecurrenceTable[{y[n+1]==a y[n] (1-y[n]),y[0]==y0}, > y,{n,1,nRecurr}],Joined->True > ] > > I can get a sequence of tables of values with > > Clear[a, y, y0, nRecurr, yinit, yinc, yfinal]; > a = 3.5; > nRecurr = 50; > yinit = 0.1; > yinc = 0.01; > yfinal = 0.2; > For[y0 = yinit, y0 <= yfinal, y0 += yinc, Print[y0, ":\n", > RecurrenceTable[{y[n + 1] == a y[n] (1 - y[n]), y[0] == y0}, y, {n, > 1, nRecurr}]]] > > But when I try to plot those values with > > Clear[a, y, y0, nRecurr, yinit, yinc, yfinal]; > a = 3.5; > nRecurr = 50; > yinit = 0.1; > yinc = 0.01; > yfinal = 0.2; > For[y0 = yinit, y0 <= yfinal, y0 += yinc, > ListPlot[ > RecurrenceTable[ > {y[n + 1] == a y[n] (1 - y[n]), y[0] == y0}, y, {n, 1, nRecurr} > ] > ,Joined->True] > ] > > I get absolutely nothing: no plot, no error message, no nada. > Similarly, when I try to plot the difference between two runs of the > map with > > seqDiff[a_,y_,inc_]:=Module[ > {r=y,s=y+inc}, > ListPlot[ > Table[r=a r (1-r),{50}]-Table[s=a s (1-s),{50}], > Joined->True,PlotRange->{-1,1} > ] > ] > seqDiff[4.0,0.3,0.1] > > I get a plot. But when I try to put that inside a for loop > > Clear[a, i,init,inc,final]; > a = 4.0; > init=0.3; > inc=0.1; > final=0.5; > For[i=init,i<=final,i+=inc,seqDiff[a,i,inc]] > > I get nothing: no plot, no error message. > > What am I doing wrong? How to get a series of plots? Just do what you did with the tables: Print the plots. You should understand that plots are no different than any other expression in Mathematica and only when returned as output, Mathematica knows how to format them. Since your For loop never returns anything, nothing is shown, just as you would expect for other expressions, too. Note that this has changed from version 5.2 to version 6. Another hint: Using Do instead of For leads to code which is easier to understand and less error prone. It also has the advantage that the syntax is exactly like that of Table which would 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. hth, albert