Julia Sets

From Math Images

Revision as of 09:49, 26 June 2012 by Rlw82 (Talk | contribs)
(diff) ←Older revision | Current revision (diff) | Newer revision→ (diff)
Jump to: navigation, search

A Julia Set
Fields: Fractals, Dynamic Systems, and Algebra
Image Created By: Anna

A Julia Set

This is a filled Julia Set created with a program described in this page.


Basic Description

Many people know Julia Sets as beautiful and intricate pictures without understanding how those images are generated. Mathematically, Julia Sets are sets of complex numbers, that are visualized by plotting in the complex plane. These sets are the repelling periodic points of iterated, complex functions. If any these terms are familiar to you, please feel free to skip certain sections in this page.

Julia Sets were first discovered by (need to check name) in an area when mathematicians were first exploring irregular, or chaotic behavior of dynamical systems. Julia Sets are the sets of points where complex functions behave chaotically.

A More Mathematical Explanation

Complex Numbers and the Complex Plane

Note: This description is meant as a review for those who a [...]

Complex Numbers and the Complex Plane

Note: This description is meant as a review for those who are already familiar with complex numbers. If you aren't please click on Complex Numbers.

Complex numbers are generally written in the form z = x+iy, where x and y are real numbers and i=\sqrt{-1}. The magnitude of a complex number \mid z\mid is defined by \mid z\mid^2=x^2+y^2. I will also be using the notation z=re^{i\theta} where r=\mid z\mid and \theta=tan^{-1}\left( \frac{y}{z}\right). This is just like switching between Cartesian coordinates (x and y) to polar coordinates (r and \theta). The complex plane is the plane defined by the x and y value (or r and \theta values) of z.

Iterated Functions

When we talk about an iterated function, we referring to plugging a function into itself repeatedly. For example, take the function Q(z)=z^2. Then,

Q^2(z)=Q(Q(z))=(z^2)^2=z^4 and f^3(z)= (z^4)^2=z^8, and so on.

Periodic and Fixed Points

Iterated functions can have fixed points—points where the function stays the same under each iteration. We can always find these points by solving the equation f(z)=z. For example, if  f(z)=z^2+5, this gives z^2+5=z. This equation has two complex roots: \frac{1\pm i \sqrt{19}}{2}. We can see that

f\left(\frac{1\pm i \sqrt{19}}{2}\right)=\left(\frac{1\pm i \sqrt{19}}{2}\right)^2+5=\frac{1\pm 2i\sqrt{19}-19}{4}+5=\frac{1\pm i \sqrt{19}}{2}.

Fixed points are simply periodic points of period 1. Periodic points are any points that appear in a cycle. Cycles are ordered sets of numbers \{z_0,z_1,z_2...z_n\} such that  
f(z_0)=z_1, f(z_1)=z_2,  f(z_2)=z_3, and so on until  f(z_n)=z_0. Cycles are also sometimes referred to as orbits. We say that \{z_0,z_1,z_2...z_n\} belong to the orbit of z_0

To find the points of period 2, we can solve the equation f^2(z)=z. By checking what f(z) is for each of those points, we can determine which belong to the same cycle.

Periodic points and cycles can be either attracting, repelling, or neutral. For attracting periodic point, there is some region around the point where iterations of points in that region get closer and closer to the periodic one. These cycles are sort of like the center of a bowl; when you put an object inside, it will move towards the bottom. For a repelling point, every point near the periodic point will eventually be iterated past a certain value. These cycles are like the top of a cone; when you place an object on the side, it will move away from the center. Neutral points are a bit more complicated, and we’ll leave them alone for now.

If you would like more information, including examples of attracting and repelling periodic points, please click on Iterated Functions

Julia Set

The conceptually easiest way to define Julia Sets are the closure of the set of repelling periodic points of a complex rational function. A rational function is a lot like a rational number; it is defined as R(x)=\frac{P(x)}{Q(x)} where P(x) and Q(x) are polynomials with roots distinct from each other. For example, H(x)=\frac{2-x}{x^2} is a rational function, whereas ln\left(x\right) and K(x)=\frac{2-x}{(2-x)x^2} are not.

It may seem like rational functions are undefined for certain values. We get around this problem by using the Riemann Sphere for our analysis.

To visualize the definition of Julia Sets, consider the function Q_0(z)=z^2. Denote z=re^{i\theta} where 0 \leq \theta <2 \pi and r is a real number. We can see that if r<1 , then all points will iterate towards zero, and if r>1, then all points iterate towards the point at \infty. However if r = 1, then z is part of some cycle. For example, if z_0= e^{2i\pi/3}, then z_1= e^{4i\pi/3}, z_2= e^{8i\pi/3}=e^{2i\pi/3}=z_0 , and \{z_0,z_1\} is a repelling two cycle. We can see that the set of repelling periodic points must be contained in the unit circle in the complex plane. The closure of this set is the entire unit circle. Therefore, the Julia Set is the unit circle.

Computational Method

Now, to see how we can plot Julia Sets, we will look at the simplest method. The escape criterion method generates something called the filled Julia Set. Julia Sets do not have interiors; however, this method often ends up plotting the interior along with the Julia Set. In this method, one defines the size of the plot, the step size, the number of iterations, and some “escape criterion.” Generally, all of these variables can be adjusted through trial and error until the desired plot is obtained.

To understand why this program often plots the interior of the Julia Set, we must first define the filled Julia Set, as the union of the Julia Set and the set of all points whose orbits are bounded by the Julia Set.

A good example of this is our example from before, Q_0(z)=z^2. Since the orbits of all z with \mid z\mid <1 are bounded by the unit circle, the filled Julia set is the unit disk.

While the filled Julia often contains interiors, when the Julia Set is not a simple closed curve, the filled Julia Set may or may not have a “filled” interior. In the picture at the top of this page, the Julia Set is composed of infinitely many simple closed curves, and we see infinitely many filled parts.

Programs of this style simply iterate points on a grid (with the fineness determined by the step size) for a chosen number of iterations and test whether or not the point iterates to outside a given value. Depending on whether one is plotting the filled Julia Set, or its complement, the program then either plots those points that did not iterate out of the desired interval or the points that did remained inside the interval. The points that remain inside are in the filled Julia Set, and the points that do not are in its complement.

The smaller the step size, the more detailed the picture will be. We also need to balance the number of iterations with the escape criterion. A too large escape criterion paired with a too small number of iterations results in many points not in the Julia Set being plotted.

We can write very simple programs to execute this algorithm in Mathematica, and one I wrote is below. It plots the complement of the filled Julia Set in purple and the set itself in white.

Mathematica Program

This program, based off of the work of Bocarra, is written for Mathematica 6. It will run on later versions of Mathematica, but may or may not run on earlier version.

 f[z_] = z^3 + z^2 + c;(*Defines the function*)
  JuliaTest = Compile[{x, y, {n, _Integer}, {c, _Complex} }],
    (*defines input values for the command JuliaTest*)
  Module[{z, num = 0}, z = x + y I;
    (*Sets z as complex and defines the fact that we will plot the initial value,not any iterates*)
   While[Abs[z] < 2.0 && num < n, z = f[z]; num++]; num]]
    (*Iterates the function and defines the escape criterion as abs(z)>2*)
  DensityPlot[JuliaTest[x, y, 10, -.5], {x, -2.0, 2.0}, {y, -2.0, 2.0},
  PlotPoints -> 100, Mesh -> False]
    (*Plots in the complex plane for the desired values. PlotPoints sets the step size*)

The picture at the top of this page used the function f(z)=z3-.48z+c with c=.70626+.502896i. For more images created by this program, click here Julia Sets by Anna.

If you would like to see more pictures of Julia Sets created by others, please click here Julia Set images.


If you can see this message, you do not have the Java software required to view the applet.

If you can see this message, you do not have the Java software required to view the applet.

Teaching Materials

There are currently no teaching materials for this page. Add teaching materials.


Barnes, Julia and Lorelei Koss. “The Julia Set is Everything.” Mathematics Magazine. Vol 76, No 4 (2003). pp 255-263.

Boccara, Nino. Essentials of Mathematica With Applications to Mathematics and Physics. Springer Science and Business Media, New York, 2007.

Devaney, Robert. L. An Introduction to Chaotic Dynamical Systems. Benjamin Cummings Publishing, Menlo Park CA, 1986.

Getz, Chonat and Janet Helmstedt.Graphics with Mathematica: Fractals, Julia Sets, Patterns, and Natural Forms. Elsevier, New York, 2004.

Milnor, John. Dynamics in One Complex Variable. 3rd ed. Princeton University Press, Princeton, NJ, 2006.

If you are able, please consider adding to or editing this page!

Have questions about the image or the explanations on this page?
Leave a message on the discussion page by clicking the 'discussion' tab at the top of this image page.

Personal tools