Re: Iterated Function System
- To: mathgroup at smc.vnet.net
- Subject: [mg67708] Re: Iterated Function System
- From: Bill Rowe <readnewsciv at earthlink.net>
- Date: Wed, 5 Jul 2006 04:18:08 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
On 7/4/06 at 1:57 AM, jrohal at wooster.edu (JAMES ROHAL) wrote: >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? Yes, this can be done with a functional program. Keeping this part of your code >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; the following will create the same graphic and should be much faster In[18]:= f[x_] := Switch[y = Random[Integer, {1, 3}], 1, Flatten[{T1[x], 1}], 2, Flatten[{T2[x], 2}], 3, Flatten[{T3[x], 3}]] In[20]:= data = NestList[f[Most[#1]] & , {Random[], Random[], 0}, 3000]; In[23]:= Show[Block[{$DisplayFunction = Identity}, MapThread[ListPlot[Most /@ Cases[data, {__, #1}], PlotStyle -> {PointSize[0.00001], #2}] & , {Range[3], {Red, Green, Blue}}]]]; -- To reply via email subtract one hundred and four