Re: Iterated Function System
- To: mathgroup at smc.vnet.net
- Subject: [mg67695] Re: Iterated Function System
- From: "ben" <benjamin.friedrich at gmail.com>
- Date: Wed, 5 Jul 2006 04:17:12 -0400 (EDT)
- References: <e8d0uo$4dk$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Dear James, I added some timing commands to your code and got the impression that your problem comes from sub-optimal memory management. Try allocating some memroy right at the beginning listPoints=Table[0,{i,steps}]; then use indexing listPoints[[i]]=zi; Runs ten-times faster on my machine. Bye Ben JAMES ROHAL schrieb: > I am looking for a faster way to plot Iterated Function Systems in Mathematica. Currently my method is using Barnsley's algorithm which randomly chooses a transformation and applies it to a previous point to get the next point. I then store the points in a list corresponding to the transformation that was applied to it. Is there a faster way to program this using functional programming in Mathematica? Thanks in advance. > > << Graphics`MultipleListPlot` > << Graphics`Colors` > > steps = 30000; > > M = {{1/2, 0}, {0, 1/2}}; > T1[x_] := {{0}, {0}} + M.x; > T2[x_] := {{1/2}, {0}} + M.x; > T3[x_] := {{1/4}, {Sqrt[3]/4}} + M.x; > > zi = {{Random[]}, {Random[]}}; > T1listPoints = {}; > T2listPoints = {}; > T3listPoints = {}; > > For[i = 1, i < steps, i++; > rand = Random[Integer, {1, 3}]; > Switch[rand, > 1, {zi = T1[zi], T1listPoints = Append[T1listPoints, Flatten[zi]]}, > 2, {zi = T2[zi], T2listPoints = Append[T2listPoints, Flatten[zi]]}, > 3, {zi = T3[zi], T3listPoints = Append[T3listPoints, Flatten[zi]]} > ]; > ]; > > graph1 = ListPlot[T1listPoints, PlotStyle -> {PointSize[0.00001], RGBColor[1, 0, 0]}, DisplayFunction -> Identity]; > graph2 = ListPlot[T2listPoints, PlotStyle -> {PointSize[0.00001], RGBColor[0, 1, 0]}, DisplayFunction -> Identity]; > graph3 = ListPlot[T3listPoints, PlotStyle -> {PointSize[0.00001], RGBColor[0, 0, 1]}, DisplayFunction -> Identity]; > Show[{graph1, graph2, graph3}, DisplayFunction -> $DisplayFunction]; > > James Rohal > College of Wooster 2007