Re: Iterated Function System
- To: mathgroup at smc.vnet.net
- Subject: [mg67738] Re: Iterated Function System
- From: Roger Bagula <rlbagula at sbcglobal.net>
- Date: Thu, 6 Jul 2006 06:52:38 -0400 (EDT)
- References: <e8d0uo$4dk$1@smc.vnet.net> <e8ft8u$q75$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Daniel I've used integer switches in other languages: the problem is that you can't optimize the probabilities. In the Rauzy I posted below with equal probabilities it doesn't fill well. I did an analysis of the substitution algebra in Mathematica and arrived at a probability of 12/22 for the first transform 4/22 for the second transform 6/22 for the third transform You can do that with the Wellin program, but not one of the faster integer pick programs. Bill Rowe's program below is very fast and has the colors as well, but still uses an integer pick. The adjustment of probability is very important in some reverse Julia IFS's. Here's a cubic reverse Julia using Wellin's mechanics ( you can see I've added a fourth transform that gives internal structures): Solve[(z^3 + (14/9)*z^2)/(10/9) - w == 0, z] fa[w_] = N[r] /. NSolve[(r^3 + (14/9)*r^2)/(10/9) - w == 0, r][[1]] ga[w_] = N[r] /. NSolve[(r^3 + (14/9)*r^2)/(10/9) - w == 0, r][[2]] ha[w_] = N[r] /. NSolve[(r^3 + (14/9)*r^2)/(10/9) - w == 0, r][[3]] z = x + I*y; (* Wellin IFS program type*) (* Diskfraction *) f1[{x_, y_}] = {Re[fa[z]], Im[fa[z]]}; f2[{x_, y_}] = {Re[ga[z]], Im[ga[z]]}; f3[{x_, y_}] = {Re[ha[z]], Im[ha[z]]}; f4[{x_, y_}] = {N[Sin[Re[Arg[z]]]/2], N[Cos[Re[Arg[z]]]/2]}; f[x_] := Which[(r = Random[]) <= 1/4, f1[x], r <= 2/4, f2[x], r <= 3/4, f3[x], r <= 1.00, f4[x]] ifs[n_] := Show[Graphics[{PointSize[.001], Map[Point, NestList[f, {0.000001, 0}, n]]}], PlotRange -> All, AspectRatio -> Automatic] ifs[50000] dh wrote: >Hi James, >you could e.g. try: >M = {{1/2, 0}, {0, 1/2}}; >T[1, x_] := {0, 0} + M.x; >T[2, x_] := {1/2, 0} + M.x; >T[3, x_] := {1/4, Sqrt[3]/4} + M.x; > >zi = {Random[], Random[]}; > >res = NestList[T[Random[Integer, {1, 3}], #] &, zi, 20000]; > >ListPlot[res, PlotJoined -> False] > >Daniel > > > > >> >> >> >> > > >