Iteration and the Complex Plane
by Dale Winter

 

In the previous lessons, we studied iteration of functions that take a real number as an input and a real number as an output. The lesson on quadratic functions gave many examples of how the iteration of functions that use real num ber inputs and real number outputs may be studied.

In this lesson, we will study the iteration of functions that take input values from the complex numbers and give complex numbers as outputs.

If you aren’t very familiar with complex numbers, you can access a short primer on complex numbers by clicking here

Our purpose for studying the iteration of complex functions is to develop ideas and computational tools that will permit us to understand the Julia set. Remember "The Rabbit" from the lesson on graphical analysis,

 

The edge of the "Rabbit" that lies between the black region and the colored region is an example of a Julia set. The Julia set of a function that uses complex numbers for its input and output values is named aft er the French mathematician Gaston Julia, who discovered many of the properties of this set. Julia sets will be extensively studied in the next lesson. The idea of the current lesson is to develop the computational tools that will be used to study the Julia set in the next lesson.

To whet our appetites, let’s review a few ideas from previous lessons. These ideas will be presented to indicate how the Julia set of a complex function can be defined and calculated.

 

 

Iterations and the Julia Set

 

The orbits of functions that use real numbers for inputs and outputs usually do one of the following:

1. The escape, i.e. the orbits go off to infinity.

2. They are attracted to a point, i.e. the orbits keep getting closer and closer to a value, the orbits move around for a bit and then settled down, and the orbits that never go anywhere.

3. Repeat a cycle periodically, i.e. orbits that go back and forth between two values.

Remember that we categorized starting points by determining whether their orbits escape (i.e. option 1 above) or not (options 2 and 3 above). We made a picture by coloring starting points one color if their orbit escapes, and another c olor if the orbit doesn’t escape.

For the function g(x) = x2, the starting points are the real numbers, and the orbit escapes if the starting point is greater than 1, or less than - 1. Coloring starting points whose orbit (using the function g(x) = x2 to do the iteration) escapes blue, and starting points whose orbit (using the function g(x) = x2 to do the iterat ion) red gives the following picture:

 

 

 

The really important feature of this picture is the red and blue line. (Remember that this is a line, because real numbers are used as starting points, and the collection of all real numbers is a one-dimensional line.)

Using the function:

to do the iterations, using complex numbers instead of real numbers, coloring starting points white if their orbit escapes, and black if their orbit doesn’t escape gives the following picture:

 

This picture is immediately recognizable as the silhouette of "The Rabbit." (The extra colors of "The Rabbit" are added by coloring starting points different colors depending on how quickly their orbit escapes.)

 

 

 

· The Julia set is the boundary between the set of starting points whose orbits escape and the set of starting points whose orbits don’t escape. What is the Julia set of the function,

when this function uses real numbers as input and output values?

· Some functions have Julia sets with no points in them. Can you think of some examples of functions whose Julia sets have no points in them?

· Is it possible to have a function where every single real number is a member of the Julia set? Either find an example of a function with this property, or explain why you think that there are no functions with this property.

· The Julia set of the function consists of a finite number of points. Consider the following proposition:

 

Proposition Suppose f(x) is a function that uses real numbers for its input and output values. If the Julia set of f(x ) has any points in it, then it has finitely many points.

 

· Is this proposition true or false? Either develop a mathematical argument to show why the proposition is correct, or else find a counterexample. If you are able to find a counterexample, can you find any additional hypotheses that will make the pr oposition correct?

 

 

Graphical Analysis and Complex Functions

 

When studying the behavior of functions that use real numbers as input and output values, graphical analysis was a helpful tool. By tracing the iterates using a graph of the function, we were able to study the iterates of the function for many starting points.

For example, the graph shown below

 

is used to study the situation when the function g(x) = x2 is iterated, starting from an initial value x0 = 1.

Graphical analysis for functions that use complex numbers for inputs and outputs is not feasible.

 

 

 

· When iterating functions that use real numbers as inputs and outputs, graphical analysis works very well, because it is possible to represent the input and corresponding output of the function as a point on a two dimensional plane. Explain how thi s is done and draw some examples.

· Functions that use real numbers for inputs and outputs, the function can be represented on a two dimensional plane. What would the analogous representation of a function that used complex numbers for inputs and real numbers for outputs look like? What about the representation of a function that used real numbers as inputs and complex numbers as outputs? In each case, find a formula for a function with the input and output values described, and draw its representation.

· Why is graphical analysis of functions that use complex numbers for both input and output values infeasible?

 

 

Studying the Iterations Complex Functions

 

In this section we’ll look at another way of representing the orbits of a function when it is iterated. As we have seen, the method of graphical analysis is difficult to use with functions that use complex numbers as their input and ou tput values. It is easy to represent the input and output values of a function that uses real numbers for the inputs and outputs - you take a plane and use the input values as the x- values on the plane, and the output values of the function as the y- values of the function. The set of these ordered pairs is the graph of the function. You can think of a plane as one number line, with a whole lot of other number lines laid across it.

It’s very hard to visualize the geometric object that would result if you tried to do this with complex planes instead of number lines. This geometric object (it is often denoted C2 by mathematicians) is exactly the k ind of geometrical object that you’d need to be able to visualize if you wanted to use the technique of graphical analysis to study the iteration of a function that used complex numbers for both the input and the output values. The point of this section is to develop ways of studying the iteration of functions that will be suitable for use with functions that use complex numbers for both the input and output values.

 

 

 

· The study of functions that use complex numbers as the input values and real numbers as the output values is very closely related to the study of functions that use real numbers for both the input and output functions. Why do you think this is?

· Are functions that use real numbers for the input values and complex numbers for output values very interesting from the point of view of studying the behavior of their iterations? Can you give examples to support your thoughts?

· If a function is interesting to study from the point of view of iterations, what can you say about the relationship between the domain and the range of the function?

 

 

We now turn our attention to studying other ways of following the iterations of a function. First, for simplicity, we’ll look at functions that use real numbers for both input and output values, and then describe how these methods can be used with functions that use complex numbers for both input and output values.

Remember from the lesson on iteration is the set or list of a starting point along with all of its iterates is called the orbit of that starting point. For example, when the function that you use to iterate is , the orbit of the starting point x = 2 is the set:

 

 

 

 

The orbit can be represented as the set of numbers {2, 4, 16, 256, 65536, . . . }. The orbit could also be represented as points on a number line. For example, the orbit of x = 2 iterated using the function g(x) = x2 could be represented by yellow dots on a blue number line.

 

Drawing out orbits like this is very tedious. It is an excellent job for a computer.

 

 

 

· The flow chart shown below gives an algorithm to plot the points of an orbit. Before executing the algorithm, the function that is used to iterate needs to be specified, as well as a "stopping value." (Otherwise, the algorithm will keep executing until the numbers that it generates are too big for the computer to handle.)

 

· Implement the algorithm in a computer language. Some variations that you might like to consider including are,

· Use different colored pixels to represent the points on the orbit. For example, the first ten points might be red, the next ten orange, etc. Coloring the points in this way can help you to make sense of the orbits,

· Experiment with different ways to represent the numbers in your computer so that the program can help you see more of the behavior of orbits,

· Experiment with the way that the computer plots points on the screen so that you can see more of the orbit on the screen.

 

· Use your program to watch the behavior of orbits when the function g(x) = x2 is used to do iterations. What do orbits do when the starting value is chosen to be:

· x = 0,

· 0 < x < 1,

· x = 1, and,

· x > 1.

Does this agree with the conclusions that you obtain from graphical analysis?

· How do the pictures that your computer program draws relate to the diagrams that are drawn when studying functions using graphical analysis? That is, how do the pictures produced by your computer program relate to pictures like the following?

 

 

 

· The computer program described above can only handle one starting point at a time. One of the advantages of graphical analysis was that one graph could be used to study the orbits that result from many starting points.

· Can you adapt the computer program so that it can accept several starting points as inputs, and calculate and display the resulting orbits? It might be helpful to have the computer program draw the different orbits using different colors.

 

 

In the next few thinking opportunities, we’ll look at another method of looking at the behavior of orbits that can be used to look at a lot of starting points at once that can be used with functions that use complex numbers as the input and output values. The only difficulty with this method is that the algebra is sufficiently complicated that this method is only really suitable for studying fairly simple functions like g(x) = x2.

 

 

 

· When we studied the orbits that result from different starting points when the function g(x) = x2 is used to do the iterations (and the input and output values for g(x) are real numbers), we observed th e following behavior:

· If the starting value was less than - 1, then the orbit escaped.

· If the starting value was exactly - 1, then the orbit was eventually fixed at x = 1.

· If the starting value was between - 1 and 0, then the orbit was attracted to x = 0.

· If the starting value was exactly 0, then the orbit was fixed at x = 0.

· If the starting value was between 0 and 1, then the orbit was attracted to x = 0.

· If the starting value was exactly 1, then the orbit was fixed at x = 1.

· If the starting value was greater than 1, then the orbit escaped.

 

This behavior can be predicted by comparing the graph of y = g(x) = x2 to the absolute value graph, as shown below.

· Can you use algebra to establish the same conclusions?

 

 

The function g(x) = x2 is fairly simple to analyze by comparing to the absolute value function for two reasons:

· The output values of g(x) = x2 are always positive.

· When the input values for g(x) = x2 are greater than or equal to zero, the output

values are monotonically increasing.

 

In the next thinking opportunity, we’ll analyze the orbits when h(x) = x3 is used to do the iterations. This is more complicated because the output values of h(x) = x3 are not always positive.

 

 

 

· When analyzing the situation when g(x) = x2 is used to do the iterations, the important things to look for were starting values, x0, where:

· | g(x0) | < | x0 |. (Orbits don’t escape.)

· | g(x0) | = | x0 |. (Orbits are fixed or eventually fixed.)

· | g(x0) | > | x0 |. (Orbits escape.)

 

Use these criteria to decide what the orbits do when h(x) = x3 is used to do the iterations.

 

· The criteria that we actually used when g(x) = x2 were:

· g(x0) < | x0 |. (Orbits don’t escape.)

· g(x0) = | x0 |. (Orbits are fixed or eventually fixed.)

· g(x0) > | x0 |. (Orbits escape.)

 

Why are these (less restrictive) conditions sufficient for g(x), but not for h(x) ?

 

· The function h(x) = x3 is monotone increasing. If the function, say f(x), is used to do the iterations is not monotone, is it enough to just look for the following starting points?

· | f(x0) | < | x0 |.

· | f(x0) | = | x0 |.

· | f(x0) | > | x0 |.

 

· Explain why it is enough just to look for these points, or else give some counterexamples that show why just looking for these points isn’t enough to determine what all of the orbits do.

 

 

Next, we’ll look at how to adapt these ways of studying iteration to studying the iteration of functions that use complex numbers for both the inputs and outputs.

 

 

Adapting Methods for Complex Functions

 

When the function h(x) = x3 is used to do iterations, and the function uses real numbers as both input and output values, the output values generated to make the orbits were no longer necessarily positive . To cope with this, we looked at absolute values of the output functions, and developed information about the eventual fate of the orbit based on the size of these absolute values.

When studying functions that use complex numbers as inputs and outputs, the output values are not only not necessarily positive, but they probably are not even real numbers. Recall that the absolute value of a complex num ber,

,

is given by,

.

Note that the absolute value of the complex number is a non-negative, real number. Investigating the absolute values of the output values may provide a way of investigating the fates of orbits when the function used to do iterations uses complex numbers for input and output values.

Perhaps the most useful inequality in mathematics is called the Triangle inequality. One version of the Triangle inequality for complex numbers is given below.

 

Theorem Suppose that z and w are complex numbers. Then:

.

 

 

 

· One explanation that is often given for the validity of the Triangle inequality is a picture resembling the one given below.

 

· Can you use this diagram to explain why the Triangle inequality is valid?

 

 

 

· It is also possible to prove the Triangle inequality using algebra. The proof can be constructed from the Theorem of Pythagoras and the following propositions:

 

Proposition Suppose that a and b are non-negative, real numbers. Then:

if and only if a < b.

 

Proposition Suppose that a and b are non-negative, real numbers. Then:

.

 

· Can you establish the propositions stated above and use them with the Theorem of Pythagoras to prove the Triangle inequality using algebra?

 

 

 

· There are many versions of the Triangle inequality. Can you use the version of the Triangle inequality established above to prove the inequalities given below (z and w are always complex numb ers).

· .

· .

 

 

Now that we have some basic tools to study the absolute values of complex numbers, we will use these tools to study the fates of orbits when complex functions of the form

(here c is a complex number) are used to do the iterations.

 

 

Want to do four propositions:

1. If c = 0 and the absolute value of the starting point is less than 1, then the orbit is attracted to zero.

2. If c = 0 and the absolute value of the starting point is equal to 1, then every point of the orbit lies on the circle of radius 1.

3. If c = 0 and the absolute value of the starting point is greater than 1, then the orbit escapes.

 

Thinking opportunity: What is the Julia set when c = 0?

Thinking opportunity: Can anything be said when c is not equal to zero?

4. If the absolute value of c is less than or equal to 2, then if any point of the orbit has absolute value greater than 2, the orbit escapes.

Thinking opportunity: Try to extend proposition 4 somehow.

 

 

Studying the Iterations Complex Functions Using a Computer

 

In order to adapt the algorithm used to study the orbits when complex functions are used to do iterations (instead of functions that use real numbers for both inputs and outputs), we will have to develop a way to do complex arithmetic o n a computer. Most high level computer programming languages support some kind of integer and real arithmetic (or a good approximation of it). Firstly, we will use the definitions of complex arithmetic to build a package for complex arithmetic.

Recall the definitions of complex arithmetic. These are listed below.

(If you would like to brush up on your knowledge of complex n umbers, you can access an on-line tutorial by clicking here.)

 

Addition Two complex numbers are added by adding their real parts and imaginary parts separately:

 

Subtraction A complex number may be subtracted from another complex number by subtracting the real and imaginary parts separately:

 

Multiplication Complex numbers may be multiplied just like multiplying out brackets (some people refer to this as FOILing). When simplifying, use .

=

=

(The operation of diving complex numbers won’t be needed for the functions that we’ll be using to do iterations, so it is not included here. See the thinking opportunity at the end of this section if you’d like to learn more about this.)

 

These operations can be conveniently defined as functions (provided you use a high level programming language - such as C or Pascal - that allows the definition of these structures) or as subroutines (if you are using a programming language like FORTRA N or BASIC). In the ‘C’ programming language, complex numbers and arithmetic could be implemented by using the following code. (The absolute value function is included because it is used in the algorithm for studying orbits. In ANSI ‘C,’ a program incl uding this code would have to include a mathematics library as the absolute value function uses the sqrt function.)

 

 

 

/* The following type definition defines a type COMPLEX that can be used to represent complex numbers. */

typedef struct complex_number {

real_part double;

imaginary_part double

} COMPLEX;

 

 

/* The functions needed to do the complex arithmetic for quadratic functions are declared below. */

COMPLEX add( COMPLEX num_1 , COMPLEX num_2 );

COMPLEX subtract( COMPLEX num_1 , COMPLEX num_2 );

COMPLEX multiply( COMPLEX num_1 , COMPLEX num_2 );

DOUBLE abs_value( COMPLEX num_1 );

 

 

/* The package of functions needed to do complex arithmetic are defined below. */

COMPLEX add( COMPLEX num_1 , COMPLEX num_2 )

/* This function adds two complex numbers and returns the sum. */

{

COMPLEX result;

result.real_part = num_1.real_part + num_2.real_part;

result.imaginary_part = num_1.imaginary_part + num_2.imaginary_part;

return(result);

}

COMPLEX subtract( COMPLEX num_1 , COMPLEX num_2 )

/* This function subtracts the second argument from the first and returns the result. */

{

COMPLEX result;

result.real_part = num_1.real_part - num_2.real_part;

result.imaginary_part = num_1.imaginary_part - num_2.imaginary_part;

return(result);

}

COMPLEX multiply( COMPLEX num_1 , COMPLEX num_2 )

/* This function multiplies two complex numbers and returns the product. */

{

COMPLEX result;

result.real_part = num_1.real_part * num_2.real_part - num_1.imaginary_part * num_2.imaginary_part;

result.imaginary_part = num_1.real_part * num_2.imaginary_part + num_2.real_part * num_1.imaginary_part;

return(result);

}

 

double abs_value( COMPLEX num_1 )

/* This function returns the absolute value of a complex number. */

{

double result;

result = sqrt{ num_1.real_part * num_1.real_part +

num_1.imaginary_part * num_1.imaginary_part };

return(result);

}

 

 

 

 

 

· It may not be immediately clear at first glance exactly what meaning might be assigned to a statement like:

.

If the denominator was a real number, then there would be no problem. The idea in complex division is to multiply the numerator and denominator by the same quantity (so that the fraction is left unchanged) and in doing so convert the d enominator into a real number. This process is called rationalizing the denominator.

 

· If the denominator is a complex number z, what would be the appropriate quantity to multiply top and bottom by? Apply your answer to simplify the complex fraction given above.

 

 

Now that we have a way of handling complex numbers and arithmetic on a computer, we will modify the algorithm used to study the fates of orbits to handle the situation where the function used to do the iterations uses complex numbers as its inputs and outputs. The changes that need to be made fall into three categories, listed below. The changes are also indicated on the flow chart below.

1. Variables are now complex numbers.

2. Arithmetic operations are now complex operations.

3. We are now plotting points on the complex plane (using the real part for the

x-coordinate and the imaginary part for the y-coordinate) rather than on a number

line.

 

 

 

 

· Modify the computer program that you wrote to study the orbits to handle functions that use complex numbers as inputs and outputs.

 

 

 

· One of the properties of the absolute value of complex numbers is summarized in the following proposition.

 

Proposition Suppose that z and w are complex numbers. Then

.

 

· Can you prove why this is so?

 

· If a complex number, z0, was chosen for the starting point of an orbit, |z0| = 1, and the function

was used to do the iterations, what could you predict about the location of the points in the orbit?

 

 

 

· Try running your program for studying orbits with a starting point that has absolute value equal to 1. Does the orbit behave in the way that you expect?

· If the orbit doesn’t behave as expected (assuming, of course, that your program is executing correctly!), how can you account for the divergence of the computer’s predictions from the expected behavior?

 

 

The last exercise in this lesson is intended to be both a test of your program, and a cautionary tale. Sometimes, computers can produce outputs that do not reflect a legitimate mathematical feature of the system or mathematical object under study. Some computer outputs represent either a limitation in the computer language used, or in the computer itself. Computers are, however, a very useful tool for identifying and studying the behavior of complicated mathematical systems, but one has to be careful to verify that the behavior that the computer shows is actually the behavior of the system under study.

 

Now that we have developed some tools for studying the iteration of complex-valued functions, we will go on to investigate one of the most interesting objects that arises in the study of iterated function - the Julia set.



Back to MMS Main Page|| Back to Chaos Contents Page