Weekly commentary: MAT335 - Chaos, Fractals and Dynamics


Top , Previous (2-d dynamics, Henon map, strange attractors), Next (Mandelbrot set)

March 28 - Julia Sets


Complex dynamics

We now turn to discrete dynamical systems that are defined by iterating a complex number z under a complex function f(z). See Sections 13.2 and 13.3 for a description of complex numbers. Briefly, complex numbers can be thought of as two dimensional real numbers; we write the complex number z = x + iy where x and y are real numbers and i is the square root of -1; i^2 = -1. We can represent complex numbers geometrically in the xy-plane, the x-axis being the real axis and the y-axis being the imaginary axis. Like any vector z = (x,y) in the plane, we can write it in rectangular coordinates (x,y) or in polar coordinates z = r e^it where r = |z| the length of z and t is the angle to the vector measured counterclockwise from the x-axis. The former representation is convenient for adding complex numbers while the latter representation is convenient for multiplying complex numbers.

If f(z) is a complex function of a complex variable, then f(z), being a complex number itself, has a real and imaginary part; f(z) = u(z) + iv(z) where u(z) and v(z) are both real numbers. Writing out both sides of this equation in real and imaginary parts, we obtain an equation of the form H(x,y) = ( u(x,y), v(x,y) ); that is, a real function of the two dimensional real vector (x,y). So complex functions of a single complex variable can be thought of as a real function acting on two dimensional real vectors, with values also being two dimensional real vectors. And so iterating a complex function is the same as a two dimensional real dynamical system. However, writing the complex function this way (as a two dimensional real function) obscures a lot of the geometry and symmetry inherent in the complex function. The formulae also become cumbersome so one typically adopts the complex notation.


Julia sets

As we did before with the logistic function f(x) = ax(1-x), we consider the discrete dynamical systems defined by a complex function f(z). That is, we consider the orbits {z_0, z_1, z_2, ... } of complex numbers z_0 under iteration by f ; z_1 = f(z_0), z_2 = f(z_1) = f^2(z_0), etc. If we plot these orbits on the complex (x,y) plane then it is the same as a two dimensional discrete dynamical system like the ones we considered in the previous week. Orbits can wander off to infinity, converge to a periodic orbit, or wander around 'aimlessly' never settling down.

About a hundred years ago, when Julia and Fatou were studying the dynamics of complex functions, it was realized that for any complex function f(z) one could classify any point z_0 according to whether or not the sequence of functions f^n(z), n = 1,2,... is "regular" or not in a neighborhood of z_0 (remember that f^n denotes the n-fold composition of f with itself, and "regular" means the set of functions {f^n(z)} is a "normal family"; you will have to consult a text on complex analysis to look up what a normal family of functions is). The set of points z_0 for which the functions {f^n(z)}, defined on a neighborhood of the point z_0, are regular is called the Fatou set, and the other points, where {f^n(z)} is not regular, is called the Julia set. That the sequence of functions {f^n(z)} is not regular is due to the fact that the orbits of points near z_0 are not regular (and by this we mean that orbits have sensitive dependence on initial conditions), so one could also call the Fatou set the set of points z_0 where the orbits of points z near to z_0 are regular, and the Julia set the set of points z_0 where the orbits of points z near to z_0 are not regular. Julia and Fatou were able to discover many remarkable properites of these sets. Now, with the aid of powerful computers, we are able to see the amazingly complicated structures of these sets. In addition, they were able to deduce that the dynamics of f on the Fatou set is regular while the dynamics of f on the Julia set is (what we would now call) chaotic.

The abstract definition of Julia and Fatou sets stated in the previous paragraph have more concrete realizations for particular types of complex functions. Let's go through a list of types of functions, beginning with the simplist. We will let J denote the Julia set of the particular function under consideration.

In general, Julia sets are extremely complicated. Most of them have a fractal-like appearance. That is, they have some kind of self-similarity and their fractal dimensions are non-integer. Go here for some examples of Julia sets. Go here for some 'animated' Julia sets.

Let's look at one particular function that plays a prominent role in this subject, the quadratic function f(z) = q_c(z) = z^2 + c (here, c is a complex number that we can vary). If c = 0, then it is easy to see that |f^n(z)| = |z^2| tends to infinity if |z| > 1, and |f^n(z)| tends to zero if |z| < 1. Thus, the boundary of the escape set, the Julia set, is the circle of radius 1 centred at the origin in the complex plane. This is perhaps the simplist Julia set we will see. The dynamics of f on the circle are chaotic; there are periodic points everywhere and ergodic points everywhere. One can see too why there is sensitive dependence on initial conditions.


Drawing Julia sets

For a general c, we showed that the Julia set of q_c(z) is contained in the circle of radius r(c) where r(c) = maximum of {|c|, 2}, because if |z| > r(c) then |(q_c)^n(z)| tends to infinity as n tends to infinity (see page 794 in the text). This gives us a way to calculate the Julia set approximately. First calculate r(c) and set Q^(0) = { z such that |z| < or = to r(c)} = the solid disc of radius r(c) centred at the origin. Then compute the set Q^(-1) = {z such that |q_c(z)| < or = to r(c)}, i.e., Q^(-1) = (q_c)^(-1)(Q^(0)) is the preimage of the set Q^(0) under q_c (the preimage of a set A under q_c is the set {w such that q_c(w) is in A}; in particular, the preimage of a point z is just + or - square root of (z-c) ). Then calculate the set Q^(-2) = {z such that |(q_c)^2(z)| < or = to r(c)} = (q_c)^(-1)(Q^(-1)). It follows then that the sets Q^(-n) are getting smaller and smaller and approach the prisoner set; limit of Q^(-n) as n tends to infinity is the prisoner set. The boundary of any one of the Q^(-n) is an approximation of the Julia set (see figures 13.18 and 13.19). The sets Q^(-n) are called encirclements for q_c(z).

Another way to draw the Julia set of q_c(z) is using an IFS (see pages 820 - 825). Here we start with the observation that if a point z is not int the Julia set then it moves away from the Julia set under forward and backward iterations of q_c. This implies then that all points not in the Julia set move towards the Julia set under backward iterations of q_c. And since points on the Julia set stay on the Julia set, all points z move towards the Julia set under backward iterations of q_c.

The backward iterate of q_c, (q_c)^(-1), is the map T1 union T2, where T1(z) = square root (z-c) and T2(z) = - square root (z-c). That, (q_c)^(-1)(z) = T1(z) U T2(z) (here, U denotes union). Does this look familiar? (q_c)^(-1) is a (nonlinear) Iterated Function System (IFS) on R^2 defined by T1 and T2. Let's write it as W = T1 U T2. The fixed point of this IFS is the Julia set of q_c. Therefore, starting with any set A in the complex plane, the iterates W^n(A) converge to the Julia set ; see Figure 13.35. The fact that the Julia set is the fixed point of an IFS implies that the Julia set is self-similar ; see Figure 13.37.

As with fractals, we can play the chaos game with this IFS. Here, there are two transformations T1 and T2 so we need a random sequence of 1's and 2's to play the game. Figure 13.36 shows the result for c = .12 + .74i. The Julia set appears quickly, but takes a very long time to produce a satisfactory image. We encountered this kind of bahavior when we played the chaos game with the Barnsley fern. There, to make the chaos game run more efficiently we adjusted the probabilities. Something similar can be done for the IFS corresponding to the Julia set (this method, called the Modified Inverse Iteration Method, is described on page 178 of the book "The Science of Fractal Images".) The result is displayed in Figure 13.36, and we see that this method gives a good impression of the Julia set. These Julia sets were drawn that way.


See the Julia Sets webpage for some pictures of Julia sets and some animated gif files of changing Julia sets.



For more information about complex dynamics, see the book Complex Dynamics by L. Carleson and T.W. Gamelin. For a more advanced treatment, consult J. Milnor's book Dynamics of One Complex Variable . The book The Science of Fractal Images by M.F. Barnsley et. al. has two chapters on Julia sets (Chapters 3 and 4). See also the sections of the Hypertextbook on Chaos on Julia sets.


Top , Previous (2-d dynamics, Henon map, strange attractors), Next (Mandelbrot set)