An elementary primer on fractal theory for
FRACTLAB v 1.2 BETA
(c) Valter Alnis Bezerra, 2000

_____________________________________

Table of Contents
-----------------

1. Fractals
2. The Mandelbrot Set
3. The Julia Set
4. Further reading

_____________________________________

1. Fractals
-----------

Fractlab works as a microscope, but instead of looking at cells and 
tissues, it enables you to look in depth at two amazing (and I mean 
AMAZING) mathematical objects: the Mandelbrot Set (named after French 
mathematician Benoit B. Mandelbrot) and the Julia Set (named after French 
mathematician Gaston Julia). Both objects are *fractals*, which means, 
basically, that they are sets of points that:

(a) have *fractional dimension* (unlike the lines, planes, and solids of 
ordinary geometry, which have integer dimension - respectively 1, 2 and 3);
(b) have *infinite depth*, that is, each small region of the structure 
contains an infinitude of small detailed structures embedded within it;
(c) are sometimes *self-similar*, meaning that among those substructures 
there are some almost exact copies of the larger structure.

Fractals are strictly speaking inexhaustible: given enough numerical 
precision and processing time, you can in principle dive endlessly into 
ever smaller and more intricate details.

The visual appeal of fractals lies in the fact that, if one can associate a 
certain mathematical property of the points constitutive of a fractal with 
a suitable color scheme, one can generate images of truly breathtaking 
beauty. That's precisely what Fractlab does.


2. The Mandelbrot Set
---------------------

Everything about the Mandelbrot Set centers on the following function:

f(z) = z^2 + c,

where z is a complex number and c is a complex constant.

Just a word or two about complex numbers. [If you are already familiar with 
complex numbers, you can go directly to the next paragraph.] A complex 
number is composed of a real part and an imaginary part, that is, z = x + 
yi, where i = sqr(-1). The operations with complex numbers aren't so 
different from those of ordinary algebra at all. For example, the product 
of two complex numbers, z1 = x + yi and z2 = v + wi, is simply the sum of 
all the cross-products: z3 = xv - yw + i(xw + yv). Representing a complex 
number z = x + yi is easy; it is just a point of coordinates (x, y) in the 
x-y plane. The modulus of a complex number is simply the distance of that 
point from the origin of the coordinates, that is, |z| = sqr(x^2 + y^2).

How is the above function f(z) used in fractal calculations? The function 
is *iterated*, that is, you start with some initial value for z, calculate 
f(z), insert f(z) as a new value for z, calculate the new value of f(z), 
insert *this* new value of f(z) as a new value for z, etc...

step 0: z[0] is given
        f[1](z) = z[0]^2 + c
step 1: z[1] := f[1](z)
        f[2](z) = z[1]^2 + c
step 2: z[2] := f[2](z)
        f[3](z) = z[2]^2 + c
step 3: z[3] := f[3](z)
...

We can write the above process in abbreviated form as

z[n+1] <- z[n]^2 + c, where n = 0, 1, 2, 3, ...

The Mandelbrot Set (named after French mathematician Benoit B. Mandelbrot) 
is the set of points c (with coordinates a and b) in the complex plane for 
which the modulus of z[n+1] never exceeds 2, for any n. The maximum value 
for the modulus is usually called the "bailout value".

Of course, the iteration could in principle be carried out a great number 
of times before the bailout value is exceeded. Strictly speaking, the only 
way to be 100% certain about whether a given point does indeed belong to 
the Mandelbrot Set would be to carry the iteration out an infinite number 
of times. In practice, since we have only a finite amount of time at our 
disposal, we must set a limit for the number of iteration steps (the 
"iteration depth"). If within the iteration depth the point does not 
"misbehave", then we assume it belongs to the Mandelbrot Set.

The standard way to represent the Mandelbrot Set graphically is to paint 
the |z|<2 points (those points in the complex plane for which the modulus 
of the iterated function does not exceed 2 after the specified maximum 
number of iterations) in black, and to paint the other points with a 
different color according to the step at which the iterated value exceeds 
the bailout value.

It seems a straightforward procedure, and indeed it is: just (complex) 
arithmetic and iteration. But the images generated by this process are 
nothing short of amazing. The Mandelbrot Set proper appears as a black 
"lake", with the now-famous shape of a kind of bug. The miracle lies in the 
"shore" of the Mandelbrot "lake" and its neighbourhoods. The "shore" is 
infinitely indented and convoluted. The neighbourhood is filled with 
infinitely intricated and intertwined patterns of colors. If you enlarge 
any part of these regions, you will discover a myriad of new details and 
structures: some look like spiral galaxies, others look like sunflowers, 
winding rivers, and arborescences from an alien planet. Still others are 
tiny but perfectly detailed copies of the original Mandelbrot shape. Once 
one looks at closeups of the Mandelbrot Set, one can hardly believe that 
such complexity, such detail and beauty can be generated on basis of an 
equation that can be written down with a handful of elementary arithmetic 
symbols.

In practice, since a very large number of calculations is necessary to draw 
any fractal image, Fractlab takes advantage of some simple optimization 
techniques to speed up the calculation process. (Nothing too sophisticated, 
though.)


3. The Julia Set
----------------

The Julia Set (named after French mathematician Gaston Julia) is also a 
self-similar fractal of infinite complexity. It is based on the same 
equation as the Mandelbrot Set, but used in a different way. While in the 
Mandelbrot Set the constant c is held constant during the iteration for 
each point in the plane, while the iteration of z always starts with 0 + 
0i, in the Julia Set c is always constant throughout the entire plane, 
while the iteration of z starts with the coordinates of each point in the 
plane. The Julia Set is the set of points z in the complex plane for which 
the modulus of z[n+1] never exceeds 2, for any n.

The Julia Set is drawn in basically the same way as the Mandelbrot Set, 
that is, the |z|<2 points are painted black, while the other points are 
painted with a different color according to the step at which the iterated 
value exceeds the bailout value.

If c is changed, the result is a different Julia Set. For that reason we 
can say that there is a Julia Set associated with each point of the 
Mandelbrot Set, or to put it in a more colorful manner, the Mandelbrot Set 
is a one-page "index" of an infinitude of Julia Sets. There are certain 
relations between the position of a given point in the Mandelbrot Set and 
the properties of the associated Julia Set. Informally speaking, for points 
inside the Mandelbrot Set itself (the "lake"), the associated Julia Sets 
also have their own "lakes". When the point becomes nearer and nearer the 
fractal "shore" of the Mandelbrot lake, the Julia Set lakes becomes more 
and more intricate, until they explode in a myriad of fragments as the 
point reaches the shore of the Mandelbrot lake.

Thus, as if the fractal complexity inherent to the Mandelbrot Set wasn't 
enough, there is a whole infinitude of *other* fractal complexities 
associated with it. The full richness of the Mandelbrot Set is beyond 
aprehension -- but you can start exploring an appreciable part of that 
richness with Fractlab right now!


4. Further reading
------------------

If you want to learn more about the Mandelbrot Set, the Julia Set and about 
fractals generally, I heartily recommend the following books:

Benoit B. Mandelbrot - _The Fractal Geometry of Nature_, W. H. Freeman and 
Company.

Heinz-Otto Peitgen / Dietmar Saupe (eds) - _The Science of Fractal Images_, 
Springer-Verlag.

Tim Wegner, Bert Tyler, Mark Peterson, Pieter Branderhorst - _Fractals for 
Windows_.

James Gleick - _Chaos: The making of a new science_.

[end of theory.txt]

    Source: geocities.com/ufabc.bc0101