MathGroup Archive 2006

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

Search the Archive

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
>
>
>  
>
>>
>>
>>    
>>
>
>  
>


  • Prev by Date: Re: Beginner--Simplest question: How to control some values in Input dialog box
  • Next by Date: RE: Hexagonal indexing?
  • Previous by thread: Re: Iterated Function System
  • Next by thread: Re: Re: Iterated Function System