The Fractal Program Attractor

Non-complex iteration

These programs are versions of the program Ratio in which the rational function is no longer assumed to be complex, that is: complex differentiable. That a mapping from the plane into itself is complex differentiable, means that its two real components - its coordinates - are connected by a certain condition: the Cauchy-Riemann's differential equations (see the theory chapter "Complex Numbers and Mappings in the Plane"). It is this condition that causes the characteristic features of the Mandelbrot- and Julia sets. The usual family of iterations z → z2 + ρ can (on coordinate form) be written (x, y) → (x2 - y2, 2xy) + (u, v) (if ρ = u + iv), and if we here replace the y-coordinate of the function, that is 2xy, by 2.05∙xy, the shapes in The Sea Horse Valley are distorted: This thread-like and tattered look is typical for the real - or non-complex - fractals. For a function which is not, as in the mentioned case, the result of a mild interference in a complex function, the picture is often very chaotic, and the colouring can be impossible at most places, because our method of colouring presupposes that the sequences of iteration converge against a finite cycle, and for a non-complex iteration the terminus need not be a finite set. The terminal set is now called an attractor, and - as the pictures below show - attractors can have very surprising shapes. Because of this, such an attractor is known as a strange attractor.

The fact that the two coordinate functions are not presupposed to be connected implies partly that a point of a Julia set is no longer necessarily a point of accumulation for each of the Fatou domains, and partly that a Julia set can have different characters of connectedness along two directions orthogonal to one another. The Julia set can for instance consist of a system of threads lying infinitely close. If so, it is connected when one goes along the threads, and disconnected when one goes across this direction. Within each of the Fatou domains, every sequence of iteration will converge against - be attracted by - one and the same attractor. The interesting attractors are relatively rare and most attractors are - as in the complex case - only finite cycles, or they consist merely of a number of separated pieces of curves, or they are, quite on the contrary, completely confused and fill up almost all the Fatou domain.

When an attractor is in the process of drawing, it can happen that the final positions for the sequences of iteration for the different points are not precisely the same, and then it looks as if the attractor is growing larger and larger. This indicates that the number of iterations performed before the attractor is drawn - namely the maximum iteration number - is too low. When the maximum iteration number is increased, such an attractor will shrink more and more, and finally perhaps only consist of some isolated points. It is characteristic for the true attractor that it is drawn instantly and that the picture does not change when the points run through the Fatou domain. When this is the case, by keying X you can stop the drawing of the attractor, so that the rest of the drawing is only aimed at the coloured Fatou domain.

The program MandR

This program is a variant of the demonstration program Julia and it works in the same way as this. The family of iterations is

z → z2 + α│z│p + ρ

That is, the usual family of iterations in which the disturbing term α│z│p is added - here p and α are real parameters with p ≥ 0. The critical points are 0 and ∞ (for all p and α), and ∞ is a super-attracting fixed point. When ρ is lying inside the Mandelbrot set, there are two Fatou domains: the one consists of the points that iterate against ∞, and this is coloured in the usual way, the other consists of the points whose sequences of iteration remain bounded, and in this domain we draw the attractor (which is the terminal position for the iteration of the critical point 0) and let the background be black. In order to get a better picture of the attractor, the points in this are of 2x2 pixels, and the picture in large size should be diminished by 25-50 pc.

The parameters p and α are initially set to respectively 1 and -0.5 (see the attractor for the Julia set point (0.5, 0.3375)). p is adjusted by key Q and α is adjusted by key W. For p = 3 and α = -0.25 the Mandelbrot set looks like this: And we can find this simple attractor (see the picture in its full size, and note that the curve is not closed): When p and α are chosen, as in the program Julia you can draw a sequence of pictures in which p is increasing or decreasing by using key A (ascending) and D (decreasing) respectively. The successive drawing is stopped by key S. By pressing a random key several times you can skip pictures and thus speed up the motion.

Contrary to the program Julia, the window does not close when the drawing of a large picture is commenced (the F-keys), because we want to be able to stop the drawing of the attractor (key X), so that the remainder of the picture is drawn faster (after this you can close the window by pressing Del).

For p = 0.25 and α = 0.25 and with light arising from the distance function, we can find this motif in the Mandelbrot set: The program PolyR

This program draws the Mandelbrot set and the Julia sets with their attractors for a family of iterations of the form

(x, y) → (px(x, y), py(x, y)) + (u, v)

where px(x, y) and py(x, y) are real second-degree polynomials. They are thus each of the form:

p(x, y) = a0 + axx + ayy + axxx2 + axyxy + ayyy2

The program works in the same way as "Ratio" and presupposes experience with that program.

The coefficients ai are written in a txt document named "copol" in the indicated order and precisely in this way: When the program is started, a finite critical point has to be chosen. Had the function been complex, there would only have been a single and this could be calculated automatically, but now there will be an infinity of points that satisfy the condition of being a critical point, and they will (for this second-degree polynomial) form a conic section. In the case of the functions px(x, y) = x - 2xy and py(x, y) = -2y + x2 + y2, the conic section is an hyperbola: As explained in the theory chapter, "Non-complex Functions", the character of the intersection of the Julia set with the critical system indicates the character of the connectedness of the Julia set. Therefore, when the Julia set and the Fatou domains run as threads, we have that the nearer the angle of intersection with the Julia set is to a right angle, the more regular is the course of the Fatou domains at that locality. We can illustrate this with our program by bringing the critical system to manifest itself in the picture of the Julia set, namely by adding a number to the colour value for the points that are "inside" the critical system. The displacement (positive or negative and taken modulo 720) is chosen by key Y.

A critical point is chosen in the same way as in "Ratio", but now we must move the moveable point all the way and close to the point on the critical system we have chosen. We prefer a conspicuously situated point: if we find something interesting, we want a simple description of our way to it. In our present case, we let the critical point be the point of intersection of the lower branch of the hyperbola with the y-axis, and then this Mandelbrot set appears: The Mandelbrot set is the set of points ρ such that the chosen critical point belongs to the bounded (black) Fatou domain or to the Julia set associated to ρ. When we let ρ pass the boundary of the Mandelbrot set, we can't be sure that the Julia set changes character dramatically, only that this phenomenon is present at some parts of the boundary. The significance of the critical points lies in the fact that a Fatou domain always contains a critical point. And the useful places of the boundary of the constructed Mandelbrot set are the places where a movement of ρ (out over the boundary) implies that a part of the critical system disappears from the Fatou domain, and thus the Fatou domain itself disappears (if it does not contain other parts of the critical system). As the critical system for a second-degree polynomial is only a single connected curve, a movement of ρ out over the boundary at the useful places implies that the inner (black) Fatou domain disappears. For the Mandelbrot set shown, these places are the two vertical sides - a passage out over the straight lines at the top does not lead to a visible alteration.

When we have found a usable locality of the Mandelbrot set, it is still rather difficult to find a point whose inner Fatou domain has a fine attractor. The point must not lie too near the boundary, for then the attractor is too chaotic and difficult to draw, and when the point is too far inside the black, the attractor will be more or less trivial, usually only a finite cycle. It is only at few places and at a certain distance from the boundary that you can find attractive attractors, and their form varies swiftly when the point is moved. With a little experience, however, you will learn some rules-of-thumb for the situation of the good places. Still, you will need to try many times, but each takes only few seconds. The speediest way to find a fine attractor is to first find a point giving an acceptable attractor graphically, and then, in the "julia" document for that Julia set (key S), gradually introduce small alterations in the coordinates of the Julia set point (the two numbers following the coefficients of the functions) and run the program. This attractor is from the place in the cross-kite where the horizontal stick intersects the boundary of the black - the following picture is a blow up:  If we choose a point near the bottom of the black where the pattern is muddy, we can find this Julia set: Here are Julia sets for the pair of functions px(x, y) = x + x2 - y2 and py(x, y) = x - y - (x2 - y2) - note that the yellow domain in the first picture is a part of the outer Fatou domain: it is not the inner Fatou domain, which is empty and which would be painted black:  If we choose trivial functions (for instance px(x, y) = x2 and py(x, y) = y2) we can find simple Julia sets and extraordinary attractors:  The program RatioR

In this program the two functions px(x, y) and py(x, y) can be fourth-degree polynomials, and their 15 coefficients are enumerated in this order:

0  x  y  x2  xy  y2  x3  x2y  xy2  y3 x4  x3y  x2y2  xy3  y4

But the two polynomials have to be divided by a polynomial of the form q(x2, y2), where q(x, y) is a second-degree polynomial, so that we are dealing with two rational functions in which the numerators are of at most fourth degree and the (common) denominator is of fourth degree. The coefficients are written in a txt document named "corat" in the same way as in "PolyR": after the two columns with the 15 numbers comes a column with 6 numbers. Now ∞ is not necessarily a critical point, and if it is we don't use it, therefore we must choose two points on the critical system.

The Fatou domains are now usually impossible to colour satisfactorily, and the Mandelbrot sets are often very confusing. You should look for the attractors at the places where a black domain is large and clearly delimited - and at an adequate distance from its boundary. If a Julia set has an interesting attractor, we can be sure that the colouring of the domain outside the Fatou domain containing the attractor is unaesthetic. Therefore the program is made such that we can choose to draw only the attractors. The primary Fatou domain (containing the first chosen critical point) is then coloured black and its attractor is coloured white, the Fatou domains outside this are coloured in one colour in the same way as the boundary (key B), and, after pressing Shift, the attractors are coloured in the same way. When a picture in large size is drawn using this technique, the attractors are usually drawn instantly, and if the coloured Fatou domains are not visible or coloured black, the drawing can be terminated by Esc. By keying A you alternate between the two ways of colouring.

It should be possible to find a case in which there are two attractors that are both interesting and at the same time clearly separated. But generally, when we have more than one attractor, we don't discover this, because the Fatou domains consist of threads lying infinitely close, so that their attractors are undistinguishable: for each point of "the" attractor, every neighbourhood contains points belonging to different Fatou domains. This phenomenon shows itself in the way that "the" attractor during drawing is flashing in the two colours.

For the functions px(x, y) = (x4 - y4)/10, py(x, y) = x - y and q(x, y) = 1 + (x - y)/5 + (x + y)2/100 the critical system looks like this: And if we choose as critical points 0 and the top intersection point with the y-axis, we get a Mandelbrot set that is quite chaotic and unsightly - the most decent place is this: And it appears that it is here that we can find the nicest attractors, namely in the domain in the centre of the picture just inside the boundary of the black: The above attractor looks as if - like the previous attractors - it is lying in a well-defined Fatou domain, but it is in fact an example of the phenomenon mentioned above: it is lying in more than one Fatou domain. If we move the Julia set point just outside the black, more explicit to the right-hand side of the vertex, a well-defined Fatou domain appears: If we then move the point a little upwards, this Fatou domain disappears and the thread-shaped pattern above becomes more spiral-shaped - we zoom to a magnification of 2 million times: Some types of complex rational functions with numerator and denominator of second degree can be written in the form demanded here. For instance (1 + z)/(1 + x2) - for this we can use our program to draw this Julia set: As starting point we can choose such a function and introduce some deviations in the expressions for px(x, y), py(x, y) and q(x, y). If we calculate these functions for (1 + z)/(1 + z2) and remove the terms xy2 and x2y, the Mandelbrot set will be disturbed: only a little at the one end, but more dramatically at the other end. In the less disturbed part we can find this Julia set, whose attractor is only a finite cycle: In the seriously disturbed part we can find this attractor (note the structure: 7 parts with 7 up-bows): Likewise we can take our point of departure in the function z2/(αz2 + 1), which for α = 0 gives the usual Mandelbrot set (and which is studied more closely in the theory chapter "Rational Functions"). It is obtained by setting px(x, y) = x2 - y2 + α(x2 + y2)2, py(x, y) = 2xy and q(x, y) = 1 + 2α(x - y) + α2(x + y)2. The critical points are 0 and ∞, and if we choose 0 two times, we get the boundary of the Mandelbrot set (here α = 0.1): The expressions in our first example appear from these by replacing px(x, y) = x2 - y2 + α(x2 + y2)2 by px(x, y) = α(x4 - y4) and py(x, y) = 2xy by py(x, y) = x - y. If we here add αx2y2 to py(x, y), the critical system will look like the former and if we choose analogous critical points we can find this motif in the Mandelbrot set: For a point in the midst of the black in the centre of the picture, the Julia set has a clear attractor, and if we draw the critical system, we see that the Fatou domains are least distorted at the places where the angle of intersection is near the right angle: But even in the case of less disturbed Fatou domains, it can happen that it is impossible to colour the (chosen) Fatou domain satisfactorily, if so, we can make it of one colour by setting the density to 0. Because of the displacement we get two colours: In the cases where the Fatou domain can be coloured fairly faultlessly, by sketching the critical system we can create decorative patterns:      Theory and more pictures on the site (to be translated): Theory 8: Non-complex functions

The program Julia

The program Ratio

Updated: September 2009

This site is a subsection of juliasets.dk