> # maptime.ms # Time Series For a 1-Dimensional map # > maptime := proc(F, x0, splist,caption) > local x, xlast, iter1, iter2, s, k, range, points, pts, p1, p2, > skipiter, plotiter; > > # splist := [skip,plot,skip,plot,skip,plot,...] > > x := x0: > > iter1 := 0; > iter2 := 0; > for s from 1 to nops(splist)/2 do > skipiter := op(2*s-1,splist); > plotiter := op(2*s,splist); > iter1 := iter2 + skipiter; > iter2 := iter1 + plotiter; > > # skip iterations > > for k from 1 to skipiter do x := F(x); od: > > # collect points for plotting iterations > > points := array(1..plotiter+1); > for k from 1 to plotiter+1 do > points[k] := [iter1+k-1, x]; > xlast := x; > x := F(x); > od: > pts := convert(points,list); > x := xlast; # so we begin next graph where we left off > range := iter1..iter2, 0..1; > p1 := plot(pts, range, color=RGB(0,0,0), style=LINE): > p2 := plot(pts, range, color=blue, symbol=BOX, style=POINT): > print(plots[display]([p1, p2],title=caption)); > od; > end: > test := proc() local a, Q; > Q := unapply(a*x*(1-x),x); > a := 2.9: maptime(Q, 0.1, [0,30,0,30],`a=2.9`); > a := 3.2: maptime(Q, 0.1, [0,30,0,30],`a=3.2`); > a := 3.5: maptime(Q, 0.1, [0,30,1000,30],`a=3.5`); > a := 3.56:maptime(Q, 0.1, [0,30,1000,30],`a=3.56`); > a := 3.74:maptime(Q, 0.1, [0,30,1000,30],`a=3.74`); > a := 3.84:maptime(Q, 0.1, [0,30,1000,30],`a=3.84`); > a := 3.9: maptime(Q, 0.1, [0,30,1000,30,1000,30],`a=3.9`); > end: > #test(); # generate some figures for the logistic map # > Q := x -> a*x*(1-x); Q := x -> a x (1 - x) > #interface(plotdevice=postscript, plotoutput= `maptime1.ps`); > a := 2.9: maptime(Q,0.1,[0,50],`a=2.9`); > #interface(plotdevice=postscript, plotoutput= `maptime2.ps`); > a := 3.2: maptime(Q,0.1,[0,50],`a=3.2`); > #interface(plotdevice=postscript, plotoutput= `maptime3.ps`); > a := 3.84: maptime(Q,0.1,[0,60],`a=3.84`); > #interface(plotdevice=postscript, plotoutput= `maptime4.ps`); > a := 3.9: maptime(Q,0.1,[10000,100],`a=3.9`); >