In these notes I will use mathematical notation similar to the syntax of Mathematica.

12. Mandelbrot and Julia sets for other functions.


Remember how the classical Mandelbrot and Julia sets are defined. We start with a quadratic function of the form g[z_] := z^2 + c, and we want to see what happens when we iterate it. For a fixed complex number c, the Julia set J(c) is defined to be the set of complex numbers z which have bounded orbits under iteration of g. The Mandelbrot set M is the set of complex numbers c such that the orbit of 0 is bounded. The orbit of zero is chosen because 0 is the critical point of the function g[z], i.e. the value of z at which the derivative g'[z] is zero. We have also looked at the logistic function f[z_] := r*z*(1-z), for which the critical point is z = 1/2.

What happens if we replace f or g by some other polynomial of higher degree? For a polynomial degree d,

p[z] = a[0]*z^d + a[1]*z^(d-1) + ... + a[d]

where a[0],...,a[d] are constants, we can define the Julia set J[p] in the same way, namely the set of complex numbers z which have bounded orbits under iteration of p. The theorem of Julia and Fatou (Theorem 5.7) is relevant here. It says the Julia set is connected if and only if the orbit of each critical point of p is bounded. A quadratic polynomial such as f or g has jsut one critical point, but a polynomila of degree d could have as many as d -1 critical points.

In order to define a Mandelbrot set, we need to look at a family of polynomials, such as z^2 + c for varying c. Then we can ask which polynomials in the family have connected Jula sets, and the Julia-Fatou theorem tells us that that this is equivalent to asking which of the polynomials have bounded critical orbits.

Here is a simple example. Consider the cubic polynomials p[z_] := z^3 + c for varying c. In this case the derivative is p'[z] = 3z^2, so there is just one one critical point, z = 0. Fractint can display the resulting Mandelbrot set using manzpower, which computer the Mandelbrot set for the function z^d + c, where the exponent d is defined by the user. The corresponding Julia sets can be seen with julzpower. Here are some examples.


Figure 12.1. The Mandelbrot set for the family z^3 + c, and the Julia set for c = .9I.

Determine which symmetries must hold for this Mandelbrot set and this type of Julia set.

This Mandelbrot set has the following features, some of which require further magnifcation to see.

Look for similar features in the Mandelbrot set for z^d + c for larger values of the exponent d.

We can derive an equation for the main body in the same way we did for the classical Mandelbrot set. Here is the code needed to get Mathematica to solve the relevant equations.

and here is the output.

We can simplify this by eplacing u by u^2 and then using

which gives

The following code will give us a picture of the corresponding curve for |u| = 1.

which gives the curve

Figure 12.2. Main body curve for the Mandelbrot set for the family z^3 + c.

Find an equation for the period 2 body for this Mandelbrot set.

Find a formula for the points where buds are attached to the main body.

Find an equation for the main body of the Mandelbrot set for z^d + c for larger values of d.

Here is another example, which can be seen using the program CubeMandel2 in dcr.frm. In it we consider the family of cubic polynomials p[z] = z^3 - 3p1^2*z + c for varying c and a fixed user defined value of p1. The derivative of this polynomial is

so there are two critical points, z = p1 and z = - p1, and both of them must be tested. The code in CubeMandel2 is

Note that z and z2 are initially set to the critical points, and then the polynomial is iterated on both of them.

Now here is an escape criterion exercise. Prove that an orbit under this cubic polynomial is unbounded if it contains a number with absolute value at least 10.

The code above stops iterating if |z| + |z2| > 20. If this is the case , then at least one of the two absolute values must exceed 10 , so one of the two orbits must be unbounded. We are looking for cases where both orbits are bounded.

Find an equation for the main body of this Mandelbrot set and plot it for various values of p1.

Are there values of p1 for which this Mandelbrot set is empty?

One could consider a more general family of cubic polynomials

Here there are two complex parameters, p1 and p2. The corresponding Julia sets are produced by CubeJulia in dcr.frm. Again there are two critical values, z = p1 and z = - p2, and both of the critical orbits must be tested for boundedness.

The Mandelbrot set for this family consists of pairs of complex numbers (p1, p2) for which both critical orbits of p[z] are bounded. In order to see it we would need a 4-dimensional viewing screen, but these are not available yet. For the moment we can only look at 2-dimensional slices of it, such as the one provided by CubeMandel2, which fixes the value of p1 and varies p2. The program CubeMandel3 fixes the value of p2 and varies p1. One could look at other slices, for example the one where p1 = p2, or even at curved slices, such as the one where p2 = p1^2. Another possibility is to limit ones attention to real values of p1 and p2.

Rational functions.

A rational function f[z] = p[z]/q[z] is one that can be written as a fraction whose numerator p[z] and denominator q[z] are polynomials. It is not defined at points where q[z] = 0; such points are called poles. Fractint can be programmed (using its formula mode) to find the Julia set of a rational function, and it will ignore the poles in doing so.

The Julia-Fatou Theorem (5.7) does not apply to rational functions, but only to polynomials. It is not true that the Julia set is connected if and only if the critical orbits (of which there are always a finite number) are all bounded. We will see an example of this below.

Nevertheless we can look at a one parameter family of rational functions and define its Mandelbrot set to be the ste of rational functions in the family forwhich each critical orbit is bounded.

Here is an example which can be seen using the programs Garland and GarlandJulia in dcr95.frm. Consider the function

f[z_] := c*(z^q + z^(-q)) = c*(z^(2q) + 1)/z^q

where c is the pixel coordinate and the exponent q is userdefined. Then we have

This derivative vanishes when z^(2q) = 1, i.e., when z is a 2qth root of unity. Hence there are 2q critical orbits, but we will see that it is only necessary to test one of them, the orbit for z = 1, which has the form

Note that if w^(2q) = 1, then either w^q = 1 or w^q = - 1. In the former case, f[w*z] = f[z], so z = w has the same orbit (beyond the first point) as z = 1. Thus q of the critical orbits are identical beyond the first point. If w^q = - 1, then

This means that each point (beyond the first) in the orbit of w*z is the same as the corresponding point in the orbit of z up to sign. This means that the 2q critical orbits are either all bounded or all unbounded.


Figure 12.3. The garland Mandelbrot set for q = 3 and the corresponding Julia set for c = 1/2.

Note the symmetry and the appearance of miniature Mandelbrot sets in the left picture of Figure 12.3. The point c = 1/2 is the center of the leftmost cardioid, so its 6 critical orbit are all bounded; in fact each of the critical points is an attarcting fixed point. However the Julia set shown on the right does not appear to be connected. Recall the the theorem of Julia and Fatou (5.7) does not apply here.

More about cubic polynomials.

Every cubic polynomial is equivalent for our purposes to one of the form f[z_] := z^3 - 3a^2*z + b for constants a and b. This manes that the full Mandelbrot set of cubic polynomials is parametrized by two complex variable a and b, and hence it is 4-dimensional. We cannot look at it in its entirety, we can only look at 2-dimensional slices of it. There are many ways to do this, and some are implemented by programs in dcr95.frm.


Figure 12.4. CubicMandelLine with p2 = 0 and Blanchard with n = 3.


Figure 12.6. Detail of CubicMandelFixed with u = 0 and the full image with u = .5 + .866I.


Figure 12.7. Details of CubicMandel1Orbit at a = -1 (magnification 5) and a = -.29810+.65445*I (magnificiation 1600).

Distorting the classical Mandelbrot set.

The program DistortMandel in dcr95.frm produces distorted pictures of M by altering the relation between c and pixel. The relevant code here is a = p1, b = 10^p2, c = a*b*pixel/(a + b*pixel). The program then makes the usual Mandelbrot computation with the number c. If we solve the equation for pixel, we get

pixel = r[c_] := a*c/(b*(a-c)).

Thus raising b from its default value of 1 has the effect of zooming out by a factor off 10^p2. We will refer to this image as the Mandelbrot set inverted at a.

Suppose for the moment that p2 = 0, so b = 1. Then if a is a large number, c is approximately equal to pixel, so the image looks a lot like M. If a is off the real axis, then the resulting image is a lopsided version of M, similar to the ones seen in miniature form in M itself.

Things get more interesting when the complex number a (which must be nonzero) is close to or inside M. If a and c are close, then the value of pixel is very large, and pixel is infinite when c=a. This means


Figure 12.8. DistortMandel with a = -1 and a = -2.


Figure 12.9. DistortMandel with a = -.75, p2 =.68*I and a = I, p2 = 1.5.

Study topics.

Some mathematical background for distortion.

A function of the form

h[z_] := (m*z + n)/(p*z + q)

(such as the one that occurs in DistortMandel above) for constants m, n, p and q is called a birational map or Moebius transformation. It is undefined when its denominator p*z + q is zero, i.e., when z = -q/p. This point is called a pole of h.

This function is closely related to the 2 x 2 matrix M = {{m, n}, {p, q}}. Given two such functions h1 and h2 with matrices M1 and M2, the composite function h1[h2[z]] is another birational map with matrix M1.M2. In particular the function h has an inverse if and only if its matix does, and this happens if and only if the determinant m*q - n*p is nonzero. These facts are easy exercises.

For example in DistortMandel, c is obtained from pixel by applying the birational map

h[pixel_] := a*b*pixel/(a + b*pixel),

so the associated matrix is M = {{a*b, 0}, {b, a}}. Its determinant is a^2*b, which is nonzero if both a and b are nonzero. Its inverse is {{1/(a*b), 0}, {-(1/a^2), 1/a}}, and the associated birational map is the function r[c] defined above.


This page was last revised on March 25, 1998.