MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Iterated Function System

  • To: mathgroup at smc.vnet.net
  • Subject: [mg67673] Iterated Function System
  • From: "JAMES ROHAL" <jrohal at wooster.edu>
  • Date: Tue, 4 Jul 2006 01:57:33 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

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



  • Prev by Date: Re: Position
  • Next by Date: Re: Re: Re: Limit of an expression?
  • Previous by thread: Hexagonal indexing?
  • Next by thread: Re: Iterated Function System