Mathe Vital BannerZentrum Mathematik BannerTUM Banner

How an IFS is created

We'll briefly explain how the algorithm for the randomized generation of limit sets works. Randomized means "controlled by chance", and in fact chance is a major element of the algorithm.

Suppose we have two spiral similarities:

\[ z\to f_1(z)\mbox{\quad and\quad}z\to f_2(z) \]

Then the algorithm works as follows: Starting at an arbitrary point $z_0$, one of the transformations $f_1(z_0)$ or $f_2(z_0)$ is be chosen at random (let's say with a 50:50 probability) and the resulting image point $z_1$ calculated. This point is then drawn and used as the starting point for the next iteration. Again one of the transformations is chosen at random, the point mapped (leading to $z_2$) and drawn. These steps are repeated many many times. The result is a cloud of points which looks approximately like the limit set.

The whole procedure not only works for two transformations, but in principle for an arbitrary number of transformations. Writing the process down as a computer program then for the transformations f_1, f_2,... f_k it will look as follows.
z=starting point;
n=number of iterations;
repeat n times: (
   f=randomly choose on of f_1, f_2,... f_k;
   z=f(z);
   draw(z);
)
Of course the individual commands have to be adjusted for the syntax of the programming language in question.

One detail hasn't been mentioned so far: As the starting point is chosen at random, one cannot expect the first few points to be close to the limit set. Therefore one usually ignores the first 100 points or so.


The following applet demonstrates the generation of an IFS using the transformations from the example in the previous chapter. The transformations f1, f2 are defined in advance. The number of iterations used can be controlled using the slider. One can observe that for a small number of points, no structure is discernible, but for large sets of points the structure of the limit set becomes clearly visible.

Please enable Java for an interactive construction (with Cinderella).


Even simple transformations can be used to generate interesting limit sets. Let's for example take, for a given point $p$, the transformation

\[ f_p(z):=(z+p)/2, \]

which maps the point $z$ to the point halfway between $p$ and $z$. In other words, $f_p$ is a contraction by a factor of $2$ around the center $p$. the following example demonstrates the result of combining thee such contractions $f_a(z), f_b(z), f_c(z)$ to form an iterated function system. The resulting limit set is a well-known fractal known as Sierpinski triangle.

Please enable Java for an interactive construction (with Cinderella).


Download files:


An IFS plant$\hookleftarrow$ Contents $\hookrightarrow$ The role of probabilty