Pictures of Julia and Mandelbrot Sets/Julia and Mandelbrot sets for non-complex functions

That our mapping $$f(z)$$ from the plane into itself is differentiable as a complex function, means that it is differentiable as a real function - that is, that its two components $$f_x(x, y)$$ and $$f_y(x, y)$$ are differentiable - and that these two components satisfy the Cauchy-Riemann differential equations:


 * $$\frac{\partial}{\partial{x}}f_x = \frac{\partial}{\partial{y}}f_y$$ and $$\frac{\partial}{\partial{y}}f_x = -\frac{\partial}{\partial{x}}f_y$$

if so, these two numbers are the real and imaginary part of $$f'(z)$$, respectively.

It is this condition that causes the characteristic features of the Mandelbrot and Julia sets for complex iteration. The usual family of iterations $$z^{2} + c$$ can (in coordinate form) be written $$(x, y)$$ → $$(x^{2} - y^{2}, 2xy) + (u, v)$$ (if c = u + iv), and if we here replace the y-coordinate of the function, that is 2xy, by 1.95×xy, the shapes in the Sea Horse Valley become distorted.

This thread-like and tattered look is typical for the real - or non-complex - fractals. For a function which is not, as in this 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 to 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 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 (by the Cauchy-Riemann equations) 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 character of connectedness along two directions orthogonal to one another. For instance the Julia set can 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 the sequences of iteration will converge to - 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 the opposite and completely confused, filling up almost all the Fatou domain.

The Mandelbrot set
In order to find interesting Julia sets and attractors, we must construct a Mandelbrot set. We assume here that our function $$f(x, y)$$ is composed of two real second-degree polynomials $$p(x, y)$$ and $$q(x, y)$$: $$f(x, y) = p(x, y) + iq(x, y)$$. We have first to choose two critical points. In the complex case, these are the solutions to the equation $$f'(z) = 0$$ (or z = ∞), and if our mapping (being composed of second-degree polynomials) were complex differentiable, there would only have been a single (finite) critical point, which could be calculated automatically. But if the function is not complex differentiable, there can be an infinity of points satisfying the condition of being a critical point.

For a general differentiable mapping $$g(x, y)$$ from the plane into itself, the derivative $$g'(x, y)$$ is a 2x2 matrix (see the section Terminology), namely composed of these four numbers:


 * $$\frac{\partial}{\partial{x}}g_x(x, y)$$  $$\frac{\partial}{\partial{y}}g_x(x, y)$$


 * $$\frac{\partial}{\partial{x}}g_y(x, y)$$  $$\frac{\partial}{\partial{y}}g_y(x, y)$$

That the Cauchy-Riemann equations are satisfied, means that this matrix corresponds to multiplication by a complex number, namely $$g'(z)$$. That $$g'(x, y)$$ is regarded as degenerated, means that its determinant $$|g'(x, y)|$$ vanishes:

$$(\partial g_x(x, y)/\partial{x})(\partial g_y(x,y)/\partial{y}) - (\partial g_x(x,y)/\partial{y})(\partial g_y(x,y)/\partial{x}) = 0$$.

For our function $$f(x, y)$$, composed of two second-degree polynomials, $$|g'(x, y)|$$ is a second-degree polynomial, and therefore its zeros form a conic section: an ellipse, a parabola or a hyperbola. Besides this curve of critical points, the point ∞ also satisfies the condition of being a critical point. We choose ∞ as the first of the critical points, and a point $$(zc_x, zc_y)$$ on the conic section as the other.

The Mandelbrot set for the family of iterations (x, y) → f(x, y) + (u, v) is the set of points (u, v) such that if we iterate $$(zc_x, zc_y)$$, the sequence does not grow towards ∞. The domain outside the Mandelbrot set can be coloured in the same way as before. In this simple case, where the iterations are towards a fixed point (namely ∞), we can (by means of matrix calculations) colour smoothly and draw the boundary. Let us set $$p(x, y) = xy$$ and $$q(x, y) = y - x^{2}$$, then the determinant of the derivative is $$y + 2x^{2}$$, so that the critical system is the parabola $$y = -2x^{2}$$. If we choose $$(zc_x, zc_y) = (0, 0)$$, the Mandelbrot set looks like this:

The Julia sets
In our simple case, where ∞ is a critical point, the colouring of the Fatou domain containing ∞ is, like the colouring outside the Mandelbrot set, without problems, and we can also draw the boundary of this Fatou domain. But besides this Fatou domain, there can now be an infinity of Fatou domains and these are not necessarily open sets. A Fatou domain is a set of points having the same attractor, and each Fatou domain contains a critical point. If we therefore iterate all the points of the conic section, we get all the attractors.

If the attractor of a Fatou domain is not a finite cycle, we cannot colour the domain in a natural way, we colour it black and draw its attractor. This is done by iterating each point of the Fatou domain: first a large number of times without drawing, and then a large number of times where the pixel is coloured white, for instance. As the attractors for the different points in the same Fatou domain are the same, we can stop this drawing after the attractors for few points are drawn.

If in the above Mandelbrot set we choose a point in the upper part a good distance from the centre line and a little bit inside the Mandelbrot set, we get this Julia set (first picture).

The Julia set is the complement to the union of the Fatou domains. In the complex case we have that if there are only few critical points in the Fatou domains, this indicates that the Julia set is "most possible" connected. This rule is also valid for a non-complex iteration: 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.

If in the above Mandelbrot set we choose a point near the centre line and just outside the Mandelbrot set, the Julia set becomes disconnected, but as it intersects the critical system in angles that are near the right angle, it does not become a cloud of dust, as in the complex case, but it becomes only disconnected in the one direction, in the other it runs as connected threads (second picture). Even the most disconnected Julia sets consist of threads in this simple case (third picture).

When we have found a usable locality in 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. It is only at few places and at a certain distance from the boundary that you can find attractive attractors, and their forms vary swiftly when the point is moved.

If we choose trivial functions, for instance $$p(x, y) = x^{2}$$ and $$q(x, y) = y^{2}$$, we can find trivial Julia sets and extraordinary (strange?) attractors (fourth picture).

Rational functions
If the components of our function are rational (real) functions and if ∞ is not a super-attracting fixed point, there can be serious "faults" in the colouring outside the Mandelbrot set, and we can be forced to abstain from colouring the Fatou domains and thus only draw the attractors. But on the other hand, we can find very nice attractors. In the first picture below is the function of the form $$(p(x, y) + iq(x, y))/r(x^2, y^2)$$, with $$p(x, y) = (x^4 - y^4)/10$$, $$q(x, y) = x - y$$ and $$r(x ,y) = 1 - (x - y)/5 + ((x + y)/10))^2$$.

At a locality where the colouring of the Mandelbrot set is tolerable, we can try and draw the Julia set, and instead of drawing the attractor, we can draw the critical system. For such functions the critical system can be as simple or complicated as it pleases us, and in the cases where the Fatou domain can be coloured fairly faultlessly, and where the Julia set intersects the critical system under nearly right angles, we can by sketching the critical system create decorative patterns. In the second and third picture below are the functions of the above form with respectively $$p(x, y) = 1 - xy^3$$, $$q(x, y) = x^2y^2 + y^4$$, $$r(x ,y) = 1 + x^2 + xy + y^2$$ and $$p(x, y) = x^3 - y^3 + x^2y^2$$, $$q(x, y) = x - y + x^2y^2$$, $$r(x ,y) = 1 + x^2 + y^2$$.

The formula for the distance function
We can only colour a Fatou domain faultless, when it is associated to a finite attracting cycle, and when this is the case, the procedure is the same as for complex iteration.

Also the formula for the distance estimation used to draw the boundary, presupposes that the iterations are towards finite cycles. However, we ought to have the procedure in the program - at least for iterations towards infinity.

We have defined the distance function by $$\delta(z) = \phi(z)/|\phi'(z)|$$ (where $$\phi(z)$$ is the potential function), and as $$\phi(z)$$ is a real function defined on the Fatou domain, its derivative $$\phi'(z)$$ (or gradient) is a vector function, namely


 * ($$\partial \phi(z)/\partial{x}$$, $$\partial \phi(z)/\partial{y}$$)

(see the section Terminology). If the iteration function $$f(z)$$ is complex (differentiable), an element of the sequence $$z_k$$ is complex differentiable as function of z, and therefore $$z'_k$$ is a complex number. But this is not the case for a non-complex iteration function, for then $$f'(z)$$ must be replaced by the 2x2-matrix $$Df(z)$$ =


 * $$\begin{bmatrix}

\partial f_x/\partial{x} & \partial f_x/\partial{y} \\ \partial f_y/\partial{x} & \partial f_y/\partial{y} \\ \end{bmatrix} $$

And $$z'_k$$ is a 2x2-matrix, namely:


 * $$\begin{bmatrix}

\partial x_k/\partial{x} & \partial x_k/\partial{y} \\ \partial y_k/\partial{x} & \partial y_k/\partial{y} \\ \end{bmatrix} $$

which we denote by


 * $$\begin{bmatrix}

xx_k & xy_k \\ yx_k & yy_k \\ \end{bmatrix} $$

It is calculated successively by $$z'_{k+1} = Df(z_k)z'_k$$, with start in the unit-matrix: $$z'_0 = I$$.

The formulas for the vector function $$\phi'(z)$$ in the three cases are:


 * $$\phi'(z) = $$limk→∞{$$x* - x_{kr}, y* - y_{kr}$$}$$z'_{kr}/(|z_{kr} - z*|^3\alpha^k)$$ (non-super-attraction)
 * $$\phi'(z) = $$limk→∞{$$x* - x_{kr}, y* - y_{kr}$$}$$z'_{kr}/(|z_{kr} - z*|^2\alpha^k)$$ (super-attraction)
 * $$\phi'(z) = $$limk→∞{$$x_k, y_k$$}$$z'_k/(|z_k|^2d^k)$$ (d ≥ 2 and z* = ∞)

The matrix product {$$x_k, y_k$$}$$z'_k$$ (for instance) is the row-matrix (vector) {$$x_k xx_k + y_k yx_k$$, $$x_k xy_k + y_k yy_k$$}. In the derivation we have used that the derivative (gradient) of the real function |z| is the vector function {x/|z|, y/|z|}.

To find the formula for $$\delta(z) = \phi(z)/|\phi'(z)|$$, we shall divide the expression for $$\phi(z)$$ by the norm of the corresponding expression for $$\phi'(z)$$, and we see, that we in the former expressions for $$\delta(z)$$ only have to replace $$|z'_k|$$ by &#8730;|det(z'k)|.

For the Julia sets, we need only calculate the determinant of $$Df(z)$$, because $$det(z'_{k+1}) = det(Df(z_k))det(z'_k)$$. Therefore we calculate the sequence of real numbers $$det(z'_k)$$, starting in $$det(z'_0) = 1$$.

For the Mandelbrot set, where the derivative is with respect to c, the number 1 in the recursion formula must be replaced by the unit-matrix I: $$z'_{k+1} = Df(z_k)z'_k + I$$, starting in the zero-matrix: $$z'_0 = 0$$.

Precise calculation of the critical point
We choose a point on the critical system in the same way as in the complex case: we draw the curve(s) and choose a point with the mouse or the arrows. And then we use Newton iteration to find the nearest point on the curve. For a real function $$f(z)$$ on the plane (which in our case is det(g'(x, y))), this Newton iteration is given by z → $$z - f(z)Df(z)*/|Df(z)|^2$$, where $$Df(z)$$ is the gradient of $$f(z)$$, that is, the vector function


 * {$$\partial f(z)/\partial{x}, \partial f(z)/\partial{y}$$}

and where the corresponding column-matrix $$Df(z)*$$ is identified with the complex number formed by these two real numbers.

In our case of the polynomial function, where $$f(z) = det(g'(x, y)) = 2x^2 + y$$, we have that the Newton iteration is given by:


 * (x + iy) → $$(x + iy) - (2x^2 + y)(4x + i)/(16x^2 + 1)$$