![]() |
|||
| Release 4.0 | |||
|
|||
Julia and Mandelbrot Sets - Theory |
|||
|
1. Julia sets At first fractals only existed in the mind of very few people. Those people did not know what they have found nor were they able to visualize the results of their essays. For example in 1919 the french mathematican Gaston Julia wrote an essay of several hundred pages which got a price from the French Academy. This great work then was forgotten for about 50 years, but then it was brough to the mind of mankind again by people examining dynamic systems. In todays world people now are able not only to examine dynamic systems but rather to visualize them using computers. If only Gaston Julia would know how it looks what he had discovered... He studied iterative dynamic systems, i.e. a system with (1) z ---> f(z) where z is a complex number. 'Iterative', because the function f is applied again and again, so he examined the sequence of points z, f(z), f(f(z)), f(f(f(z))), ..., for different initialization values of z. The sequence of those points is called orbit of the initialization value z, or to define it: Definition Orbit of z: Let f be a function. Then the list of successive iterates of a point or number is called the orbit of that point. In a common sense the Julia set (named after Gaston Julia) consists of all starting points z, whose orbits behave abnormal. Normally the orbit leads to something, the orbit leads to an attracting point, or, to be more general, to an attracting set. For example consider f=z*z: If we start with z=1, then the orbit is (1,1,1,...), so the orbit converges to the number 1, so 1 is an attracting point. If we start with z=0.5, then the orbit is (0.5,0.25,0.0625,0.0039, ...), which converges to 0, so 0 is an attracting point, too. If we start with z=2, the orbit is (2,4,16,256,65536,...), which converges (diverges) to infinity, so infinity is an attracting point, too. In this case you see that the orbits of all initialization values lead to an attracting point. But this is not a must. If we use another function we will see that some orbits lead to nothing, they simply jump around, not knowing where they should go. The Julia set consists of all numbers whose orbits don't know where to go. That's a rather strange definition, isn't it? I'm limiting my explanations mainly to quadratic systems, i.e. systems where f(z) is a polynomial of degree 2 in the form f(z)=a*z*z+b*z+c. Now let me define some things: Definition Critical Point of function f: Let f be a function. Then every point z with f'(z)=0 (first derivation of f at point z is null) is called Critical point of f. Definition Fixed point of f: Let f be any function. Then every point z with z=f(z) (f lets z invariable) is called fixed point. Additionally, if infinity is invariable, i.e. f(infinity)=infinity, then infinity is a fixed point, too. If you have headaches on reading such stuff, then please consider another mapping of the complex number plane, the so called Riemann sphere, where infinity indeed is a single point, and not a strange expression for something unimaginable. The function f(z)=a*z^2+b*z+c can be simplified by applying a transformation. Such a transformation assigns special values to some points. Most of the time people work with two standard forms of f: (1) f(z)=z*z+c and (2) f(z)=m*z+(1-m)*z*z In the first case the critical point of f is at 0, and in some situations this can be very useful for theoretical and practical purposes. The (finite) fixed points of f are a bit more complicated: 0.5+sqrt(0.25-c) and 0.5-sqrt(0.25-c). In the second case the (finite) fixed points of f are at 0 and 1. Most of the time fractal programs use standard formula (1). (As you can imagine, such transformations do not change the fractal itself, transformations just distort the image. So all strange and beautiful structures found in any Julia set using the function f(z)=m*z+(1-m)*z^2 are found in a special Julia set using the function f(z)=z^2+c, too, at least in a mathematical sense...) The property of a Julia set is mainly determined by its attracting fixed points. You know what a fixed point is, but how can one determine whether it is an attracting fixed point? Lets assume p is a fixed point of f, i.e. f(p)=p If we zoom in at p very deep and take z0 close to p, then z1=f(z0) is similar to: z1-p=m*(z0-p), with m=f'(p) Quite clear, if we write it in another way: The first derivation of f at point p is:
f(z)-f(p)
f'(p)= lim -----------
z->p z - p
Now if we choose z0 close to p, an approximation of m=f'(p) is:
f(z0)-f(p) z1 - p
m = ------------ = --------
z0 - p z0 - p
The so called eigen value m of a fixed point p of f is m=f'(p). As we see from above, if |m| is less than 1, then z1 is more close to p than z0, so we have an attracting fixed point. If |m| is greater than 1, then z1 is more far away than z0, so we have a repulsing fixed point. If |m|=1, then the fixed point is neutral or indifferent. Then numerous interesting effects can occur (at least theoretically interesting). So if one wants to obtain an interesting Julia set, one should pay attention to the attracting fixed points. Enough said about critical points, fixed points and so on? Well, how does one actually calculate a Julia set? What we have to do is the following: We have to search for all points whose orbits lead to something. All those points don't belong to the Julia set, the Julia set consists of all other (remaining) points. Well, now the question is: What do you want to calculate? A nice image or the Julia set? If you want to calculate a nice image then simply do what most other fractal programmers do: Check the orbits of all points: If they bail out some predefined value, color it according to the time needed to bail out (escape time algorithm). If they don't bail out stop after a predefined number of iterations and color the pixel black. That's it. So what do these programmers? Well, they look for all points, whose orbits lead to infinity. They simply don't care about attracting fixed points, attracting cycluses etc. They assume that infinity is the only one. All they want to do is to calculate nice images under the label 'fractal', because it's modern and looks funny and this is all people want nowadays. In order to calculate the Julia set one has to check whether the point is attracted by infinity, by a finite attractor, or by an attracting cyclus. If it is, then the according pixel can be colored in some way to indicate it does not belong to the Julia set. If it is not attracted after some time, it can be colored accordingly. An algorithm could look like follows:
z=complex number corresponding to screen pixel to examine
Bail_in=0.0000000001
Bail_out=16
for i=0 to MaxIter step 1 loop
begin
z=f(z)
if i=MaxIt/2 then cyclus_search=z;
if i>MaxIt/2 then
begin
if |z-cyclus_search|<Bail_in then break;
// point does not belong to Julia set
// point is attracted by a cyclus of length i-MaxIt/2
end if
if |z|>Bail_out then break;
// point is attracted by infinity
end loop
if i<Max
| |||

