Introduction to Julia Sets and the Mandelbrot Set
Preface
The "Definitions" section provides a general introduction to fractals. This section will be concerned only with images based on the Julia Sets and the closely related Mandelbrot Set.
The Mandelbrot Set serves as an index to the type of Julia Set. It can be used to determine for which values of "C" a Julia set will be "Connected", i.e., all one piece, and for which it will be just a cloud of isolated points, usually called either a "Cantor dust" set or a "Not Connected" set ( abbreviated "NC" for short ).
All Julia sets are one or the other. There are NO Julia sets that consist of two or more connected, pieces. If your results look otherwise, it means that your value for the maximum number of iterations, "MI", was too small ( see below ).
The section on historical background is a useful preliminary to the following discussion. If you are allergic to mathematics, skim through the derivation below, but look at the Mandelbrot Set section. It's short and the last paragraph may be useful.
Iterative Generation of a Julia Set
The Julia Sets are generated by applying an iterative process to the very simple non-linear square-law function shown below:
F(z,C) = z2 + C
where z is a point on the X-Y plane, and C is a constant with both x and y components, Cx and Cy. For every value of C, there is a unique Julia Set, or "Jset", which exists over a certain region of the X-Y plane.
Both "z" and "C" are complex numbers, and their values can be represented as follows:
z = ( x, y ) = x + iy C = ( Cx, Cy ) = Cx + iCy
so that
Magnitude of z = Square Root of ( x2 + y2 )
Angle of z = arctan( y/x) = Angle of the line from the origin to the z-pointTo generate a Julia Set, select the Cx and Cy values for the constant term, C, and a value for a point on the X-Y plane, z0. Then compute the value of the sequence of points, z1, z2, . . . ,zn, from the function, F(z,C) as follows:
z1 = (z0)2 + C
z2 = (z1)2 + C
- - - - - - - - -If the successive values of zn diverge, approaching infinity as n increases, then z0 is not a point on the Julia Set. If they remain finite, then z0 is a point on the Julia Set corresponding to that value of "C". To determine the image of the Julia Set, you could test every point on the X-Y plane to see which ones form the set. Fortunately that is not as hard as it sounds. It is known that this iterative process diverges for all z having a magnitude greater than 2.0. At each point, therefore, you can stop the iteration when this magnitude is exceeded.
If the successive values of zn remain less than 2.0, the iteration can be stopped when the number, "n", reaches a "Maximum Iteration" value, "MI", which you choose. This choice depends on how safe you want to be. If MI = 64 ( or less ), the computation will give up before some points have a chance to escape as far as the region which is known to diverge. In this case the connected part of your Jset will appear larger than it really is. A value equal to 256 is usually a good place to start. Larger values will increase the computation time, but may be necessary sometimes, particularly at high zoom levels. The choice of MI also affects the maximum number of different colors that can be used for the image.
The resolution of the image depends on the number of points ( picture elements, or "pixels" ) chosen. A grid of 640 x 480 equally spaced points will be equivalent to the image on a low-resolution computer monitor. This is still a lot better than the image on your television set. It requires calculating over 300,000 points, which explains why not many Julia set images were determined before the days of digital computers.
A brief note for purists: The Jset obtained above is actually called the "filled-in Julia set". The term "Julia set" refers to the boundary of this region for a "connected" Julia set. However, I will continue to use "Julia set" to mean both the boundary and its interior. A Julia set which is not connected, and consists only of a cloud of points, has no interior, and the "filled-in Julia set" is the "Julia set".
Simple Examples of Connected Julia Sets
The simplest Julia set, by far, is the one obtained for C=(0,0). It is very easy to compute since each zn in the iteration is just the square of the previous one. If the magnitude of the initial z0 is greater than one, the successive magnitudes will approach infinity very rapidly. For an initial z0 less than one, the successive magnitudes will approach zero, also quite rapidly once they become significantly less than one.
For an initial z0 on the "unit circle" the successive magnitudes will remain at 1.0. These points will either continue to rotate around the unit circle forever, or they will reach the point (1,0) and just remain there. Thus the Julia Set for C=(0,0) is the unit circle and its interior. The center of this disk is the point z=(0,0), which is also the "center of gravity", or "barycenter", of the image.
This is a unique Julia Set since it is the only one whose boundary is not a fractal. The color gradient contours around it are merely concentric circles, which creates simple ( and rather uninteresting ) images.
Another relatively simple Julia set is obtained for C=(-2.0, 0 ). This set extends from z =(-2.0, 0 ) to z=(+2.0, 0 ) along the real axis. This is the largest linear dimension for any Julia set. For an image providing an overall view of the set, it appears to be a straight single-pixel line along the real axis.
This is one of the few cases where a line can actually be seen since the grid points coincide with points of the set. This is misleading, however, since a zoom view shows a more complex structure at a number of points along this line. An overall image is shown below, and a zoom view centered on the point z=(0, 0 ) is used as the final image for this section.A two-color example of any NC Julia Set would have a really simple image if the set points were colored black (the normal default color) and the exterior, or "escape", points were white (definitely not the normal default). You can see its image by looking at a blank sheet of white paper, so I won’t waste space showing it.
The reason for this is that you cannot see points ( or even lines ). You can only see areas on a CRT monitor screen or on a sheet of paper. Points are normally represented by small dots and lines by thin strips. It is true that you could see a single black pixel if one of your grid points coincided with a point of a Cantor dust cloud. However, the probability of this occurring is essentially zero.
Faces (70 KB): Visitors from Algol, the Winking Demon Star.
Emblem (63 KB): A Julia Set pattern using the rainbow color bar below.
The Mandelbrot Set
The point z=(0,0), the origin on the X-Y plane, is a point on every connected Julia set. This is not obvious, but was proven, independently, by both Julia and Fatou in 1919. It is not, however, a point on any not-connected Julia set.
Determining whether a given value of C=(Cx, Cy) will produce a connected Julia set or a "dust" set is extremely difficult analytically, but very easy to do computationally, at least in principle. Since the point z=(0,0) is a member of all connected Julia sets, all that is necessary is to test that one point for the given C.
If the following sequence does not diverge, then the corresponding Jset for C is connected. If it diverges, the Jset is a Cantor dust set.
z0 = (0, 0)
z1 = (z0)2 + C = C
z2 = (z1)2 + C = C2 + C
- - - - - - - - -This sequence is clearly just a function of C. Treating "C" as a variable, select a grid of points for C and determine which ones have an iterative series, starting from zero, which does not diverge. Plot these points ( in black, by convention ) on an X-Y C-plane. This is the "Mandelbrot Set" ( or "Mset" for short ).
This set turned out to be enormously complicated, with a cardiod shaped central region having circular bumps with numerous dendrites, or filaments, growing from the perimeter. The image shown here has the thickness of these dendrites exaggerated to make them more visible. Actually they are very thin ( some parts would not be observable ), with multiple branching points. They also contain miniature copies of the main Mset as small "islands".
The "M-Set" images section contains a larger version of this overall image. The boundary is far more complex than that of any Julia set. Zooming in on parts of this boundary region, outside the set itself, can produce very elaborate images when used with a suitable color gradient bar. There is a very close relationship between these "zoom" images from the Mset and a zoom into the Julia set image having a C-value in the same area. Note that points on the Mset correspond to values of "C" for the Julia set.
The best ( i.e., most interesting ) Julia set images are obtained with C-values near the boundary of the Mset, both inside it and outside it. As C moves across this boundary, the Jset changes abruptly from a connected set to a dust set.
Some Fractal Pictures
Fast access to the following different links