- •Table of Contents
- •Very short introductions
- •Kenneth Falconer
- •2. (A) The first few stages e0, e1, e2, … of construction of the von Koch curve f, (b) three such curves joined together to form the von Koch snowflake
- •3. Repeated magnification reveals more irregularity
- •4. A squig curve (above) and a fractal grass (below) with their generators: the line segments in the generators are repeatedly replaced by scaled down copies to form the fractals
- •5. Points in the plane with their coordinates
- •7. The Hйnon attractor with a portion enlarged to display its banded structure
- •9. The von Koch curve together with its defining template
- •10. Reconstruction of the von Koch curve by repeated substitution of the template in itself
- •8. The figures shown are all similar to each other
- •11. The Sierpiński triangle with its template consisting of a large square of side 1 and three squares of side ½
- •12. Self-similar fractals with their templates: (a) a snowflake, (b) a spiral
- •13. The 8 symmetries of the square indicated by the positions of the face
- •14. Self-similar fractals with the same template but with different orientations of the similar copies
- •15. A function moves points to points and so transforms sets of points to sets of points
- •16. A self-affine fractal with its template
- •17. A self-affine fern and tree
- •18. Construction of a random von Koch curve—when replacing each line segment a coin is tossed and the ‘V’ is drawn pointing upwards for a head and downwards for a tail
- •21. Variants on the von Koch curve with the dimensions depending on the angles used in the constructions
- •23. The effect on length, area, and d-dimensional measurement of enlargement by a factor 2
- •25. (A) Addition of two complex numbers shifts one parallel to the other, (b) squaring a complex number squares the magnitude and doubles the angle
- •Iteration and Julia sets
- •27. The filled-in Julia set of z → z2 − 0.9 with its exterior shaded according to the escape time
- •30. Successive zooms on the Mandelbrot set
- •31. Julia sets corresponding to various points of the Mandelbrot set
- •33. Progression between the loops of the Julia set for z → z2 – 1 under iteration
- •34. Progress of a typical random walk
- •35. Several independent random walks plotted together showing the spread of the walkers widening as time progresses
- •36. The distribution of positions of 130 random walkers after 20 steps
- •37. Graph of a Brownian process
- •38. A random walk in the plane
- •39. A Brownian path in the plane
- •41. A computer simulation of fractal fingering
- •42. Processes with different Hurst indices
25. (A) Addition of two complex numbers shifts one parallel to the other, (b) squaring a complex number squares the magnitude and doubles the angle
Pythagoras’ Theorem provides a straightforward way to find the
magnitude of complex numbers. To get from the origin to the complex
number 2 + i (the point with coordinates (2, 1)) we step a distance 2
to the right and then step a distance 1 up. But the line joining the
origin to 2 + i is the hypotenuse of the right-angled triangle with
these two steps as the other sides. Pythagoras’ Theorem tells us
that the square of the length of this hypotenuse is 22
+ 12, so that
the magnitude of 2 + i is
.
In just the same way, the magnitude of a general complex number z
= x + yi is
.
We saw above that (2 + i)2
= 3 + 4i. The magnitude of 3 + 4i is
which is the square of
,
the magnitude of 2 + i. We can also calculate the angles of these
complex numbers: the angle of 3 + 4i is 53.130° which is exactly
double 26.565°, the angle of 2 + i, see Figure
25(b). Squaring 2 + i gives a complex number of double the
angle and the square of the magnitude. This is no coincidence, but is
an instance of a remarkable property of complex numbers:
Squaring a complex number squares the magnitude and doubles the angle
Put another way, for every complex number z, the magnitude of z2 is the square of that of z, and the angle of z2 is double that of z. Verifying this property is a little involved, and more details are given in the Appendix.
Throughout this chapter we will be interested in a combination of these two operations, squaring and addition. We will be particularly concerned with the function
which takes a complex number z, squares it, and adds a fixed complex number c, moving each point z in the complex plane to the point z2 + c. From the preceding remarks the geometric effect of (1) is to square the magnitude and double the angle of z and then shift by the complex number c.
For any given c the effect of the function (1) on any complex number is easily calculated, for example, taking c = 2 + i,
and similarly
1 + 2i → –1 + 5i and 5 –i → 26 –9i.
Written as z → z2 + c the function (1) has a simple and pleasing form. For purposes of calculation and computation, it is useful to have a coordinate version of the function. Expressing the complex numbers in terms of their real and imaginary parts, so z = x + yi and c = a + bi, (1) becomes
x + yi → (x + yi) + (a + bi)
which, after squaring out the first term (see the Appendix) and adding, reduces to
x + yi → (x2 – y2 + a) + (2 xy + b)i.
Regarding complex numbers in terms of coordinates given by their real and imaginary parts, we may read off (1) in coordinate form as
Iteration and Julia sets
A crucial thing to bear in mind for the remainder of this chapter is that a function is just a rule that tells us how to move around the plane—from each point in the plane the function takes us to some other point. As we saw in Chapter 1, starting at some initial point, repeated application or iteration of a function (which was expressed in terms of coordinates) takes us on an itinerary or tour around the plane. For a given function, the itinerary, and in particular where we get to in the long run, can depend on the starting point. We now examine the itineraries of functions given in terms of complex numbers by
as we have pointed out, this is equivalent to iterating the coordinate form (2).
We start with the simplest case where the constant c is 0, that is
which just squares complex numbers; geometrically it squares their magnitudes and doubles their angles. Let’s look at the itineraries of various initial complex numbers under this function. Starting at 1 + 2i the function (4) takes us to (1 + 2i)2 = –3 + 4i. The next iterate is (–3 + 4i)2 = –7 – 24i, and so on. The first few points of the itinerary starting at 1 + 2i are
1 + 2i → –3 + 4i → –7 – 24i → –527 + 336i → 164833 –354144i → …
These complex numbers get large very rapidly: starting at 1 + 2i the iterates rapidly rush off the page into the far distance; we say that they ‘go off to infinity’. Indeed, since squaring a complex number squares its magnitude, the magnitude is squared at each step. The magnitude of 1 + 2i is so the a conductor in the form of a A shapes points on this itinerary have magnitudes , 5, 25, 625, 390625, ….
Now suppose that we start nearer the origin, say at 0.5 + 0.3i which has magnitude 0.583, and repeatedly apply (4). This time the itinerary is
0.5 + 0.3i → 0.16 + 0.3i → –0.0644 + 0.096i → –0.00507 + –0.01236i → –0.00013 + 0.00013i → …
Again the magnitude is squared at each step, giving magnitudes of 0.583, 0.34, 0.116, 0.0134, 0.00018, …; squaring a number less than 1 yields a much smaller number so the itinerary rapidly approaches 0 = 0 + 0i.
These two examples are typical of the itineraries of the function (4). Depending on the starting point, either the iterates move rapidly towards the origin, or they shoot off into the distance, never to return. (With the children’s treasure hunt analogy of iteration, either a child rapidly comes back home, or wanders further and further away, never to be seen again!)
We can be more specific by considering the magnitude of the iterates, recalling that squaring a complex number squares its magnitude. Squaring a number greater than 1 gives a rather larger number, so if the magnitude of the initial point is bigger than 1 the magnitudes of the iterates rapidly get large on repeated squaring. On the other hand, squaring a number smaller than 1 gives an even smaller number, so iteration from an initial number of magnitude less than 1 gives an itinerary that approaches the origin. Geometrically, if a circle is drawn in the plane with centre at the origin and with radius 1, an itinerary starting at any point inside the circle will approach the origin, but an itinerary starting anywhere outside the circle will shoot off into the distance, Figure 26(a). The circle with centre the origin and radius 1 plays a special role. It is the boundary between these two dramatically different types of behaviour, that is the boundary between the set of initial points with itineraries that approach the origin and those with itineraries that go to infinity. This boundary circle is termed the Julia set of the function (4). If we start with a point on the circle itself then the iterates will always remain on the circle, though this is an unstable situation as near any point on the circle there are points just inside that iterate to the origin and others just outside that iterate to infinity. This is an example of ‘sensitive dependence on initial conditions’—a very slight change of the initial point can result in completely different long term behaviour of the itineraries.
26. Itineraries under (a) z → z2 and (b) z → z2 + 0.1 + 0.1i, showing the curves that separate the two types of itineraries
Let’s now change the function (4) slightly by adding some small complex number c, say c = 0.1 + 0.05i, so (3) becomes
This slight modification to the function might be expected to result in only a slight change in the behaviour of the iterates. Here are two itineraries under (5) with different starting points:
2 + i → 3.1 + 4.1i → –7.1 is completely defined by the )6 + 25.52i → –600.76 – 362.28i → 229663.46 + 435291.86i → …
and
0.5 + 0.3i → 0.16 + 0.4i → 0.0076 + 0.308i → 0.0052 + 0.1047i → 0.0891 + 0.1010i → 0.0977 + 0.118i → …
Starting at 2 + i the coordinates again get very large very rapidly, with the iterates rushing into the distance. On the other hand, starting at 0.5 + 0.3i the itinerary remains quite close to the origin. Geometrically, at each step we square the modulus and double the angle of the number and then shift by the complex number c = 0.1 + 0.1i; since c is small the squaring part dominates the shift so the behaviour is not very different from the case when c = 0. Just as with the function (4) two types of behaviour are possible depending on the starting point: either the iterates rapidly go off to infinity, or they stay near the origin. (In fact, in the latter case, the iterates always approach a particular point which is, to three decimal places, 0.094 + 0.123i. This is a fixed point of the function (5), in that it is unmoved by the function, so 0.094 + 0.123i → 0.094 + 0.123i. Starting the iteration at 0.094 + 0.123i the itinerary remains there for ever.)
The initial points that give the two types of behaviour under iteration by (5) are again separated by a curve. The picture is a just distorted version of that for (4): the separating curve is still a closed loop or circuit, but is no longer quite circular, see Figure 26(b). Indeed, on close inspection the curve appears very wiggly—it is in fact a fractal with dimension about 1.01. Repeated application of the simple function (5) leads to a fractal—the curve that separates the initial points of itineraries which go off to infinity from those initial points whose itineraries remain near the origin.
This motivates an important definition which, in principle, applies to any function. The set of initial complex numbers, thought of as points in the plane, from which the itinerary does not wander off to infinity is called the filled-in Julia set and the boundary of the filled-in Julia set is called the Julia set of the function. The Julia set separates two very different types of behaviour. If a point is in the Julia set there are arbitrarily close points that iterate to infinity but also arbitrarily close points that do not wander far off under iteration. For the function (4) the filled-in Julia set is the disc with centre the origin and radius 1 and its bounding circle is the Julia set. This picture is distorted a little for function (5), with the Julia set a fractal loop with the filled-in Julia set the region inside the loop.
If iterates of a complex number go off to infinity, then, unless the number lies extremely close to the Julia set itself, the iterates move off into the distance very rapidly indeed. This provides a way of computing the Julia set of a function. To see if a point is in the filled-in Julia set we examine its iterates under the function. If some iterate has magnitude more than 5, that is if the itinerary leaves the circle with centre the origin and radius 5, then the starting point is not in the filled-in Julia set. However, if the first 100 iterates all have magnitude less than 5 and remain in this circle then the starting point is deemed to be in the filled-in Julia set and coloured (usually) black. This procedure is done for a large number of initial points in the plane, perhaps for each pixel on a computer screen. The black region of the plane obtained in this way is the filled-in Julia set a conductor in the form of a A shapes, and its boundary is the Julia set. Often the points outside the filled-in Julia set are coloured or shaded according to the ‘escape time’, that is the number of iterations needed to reach distance 5 from the origin. The filled-in Julia set of Figure 27 was produced in this way. (The numbers 5 and 100 indicated here are typical values, but in practice are chosen depending on the function and on the accuracy of the picture required. From theoretical considerations, if some iterate of a point under (3) has magnitude that is greater than both the magnitude of c and 2, then the itinerary must go to infinity, a fact that reduces computation considerably. Moreover, apart from those pixels very close to the Julia set, there are techniques for considering large blocks of pixels together when testing the iterates.)
