MAT 335 Weekly Summary
Winter, 2002
Page numbers refer to the text.
Also look at the previous year's commentary; W2000 and
W2001.
Some useful formulae
Click on the date to go to that section: 7 Jan. (Cantor set), 14 Jan.
(Sierpinski triangle, Length exponent d of curves), 21 Jan. (Fractal dimension),
28 Jan. (Box counting method, IFS; encoding an image), 4 Feb. (Contraction Mapping
Principle, Decoding an IFS), 11 Feb. (Fractal Image Compression, The Chaos Game),
27 Feb. (Chaos Game; finding the game 'rules', adjusting the probabilities),
4 March (One-dimensional dynamical systems, fixed points, periodic orbits, stable and
unstable points and orbits), 11 March (symbolic dynamics), 18 March
(symbolic dynamics, Shadowing Lemma), 25 March (bifurcation and final state),
1 April (final state diagram of logistic, Charkovsky's Theorem, two-dimensional
dynamical systems and the Henon map), 8 April (Julia sets and the Mandelbrot set)
7 January
The Cantor set (pp 67-72, 75-77). The Cantor set C can be constructed by removing the (open)
middle third
from [0,1] and then removing the middle thirds from the remaining intervals [0,1/3], [2/3,1], etc ad infinitum.
The Cantor set is the set of points remaining. By adding up
the lengths of the intervals removed (using the formula for a geometric series)
we see that the "length" of C must be zero (because the lengths of all the intervals removed in the
construction is 1).
Although the length of C is zero, there are many points in C. For instance, it's easy to see
that the end points E = {0, 1, 1/3, 2/3, 1/9, 2/9, 7/9, 8/9, . . . } of the intervals removed are in
C. But there are many, many more points in C (for example, 1/4 and 3/4 are in C).
To find out exactly what points are in C, it is best to look at the
ternary (or triadic) expansions of numbers in [0,1]. This way we see that the points in C have
no 1 in their ternary expansion (since those regions of [0,1] containing numbers with a 1 in their
ternary expansion were removed in the construction of C). Conversely, any number in [0,1]
that has no 1 in its ternary expansion is in C. For those numbers that have two ternary
expansions, if one of them has no 1 then that number is in C (for example, [1/3]3
= .1 or .022(22) ). It is important to note that any string .a1a2
a3. . . of 0's and 2's corresponds to (the ternary expansion of)
a number in C.
Now we "match" the numbers in [0,1] to the numbers in C, in a one-to-one manner, to show that
C contains at least as many points as [0,1]. To do that we first express numbers in [0,1] in base
2, i.e., we look at their binary expansions. So take any x in [0,1] and let
[x]2 = .b1b2b3. . . be its binary expansion.
Now we change every 1 that occurs in the binary expansion of x to a 2.
Then we are left with a string .c1c2c3. . . of 0's and
2's (the c's that are 0 are in the same position as the 0's in the binary
expansion of x). So this string must correspond to a (unique) number y in C where
[y]3=.c1c2c3. . . .(because of the important note
in the previous paragraph). Thus, we have matched every x in [0,1] to a (different) y in C and so
the cardinality of [0,1] and C must be equal
(i.e., the number of points in [0,1] and C must be the same).
Properties of C;
- the length of C is zero
- C contains no intervals, i.e., is it "dust" ('totally disconnected' in mathematical jargon). Thus,
between any two points in C is a point that is not in C.
- C has the same cardinality as [0,1]
- C is self-similar (i.e., small pieces of C are exact replicas - albeit on a smaller scale - of
C)
- every point x in C is the limit of a sequence of end points. That is, there is an (infinite) sequence
{yi} of points from E such that yi --> x as i tends to infinity. So the end
points "cluster" around the points in C.
14 January
The Sierpinski triangle (pp 78,79) and the von Koch curve (pp 89-93, 147-152). Both were obtained
by a recursive algorithm. The Sierpinski triangle contains an infinitely long curve (the edges of
the triangles removed) and the von Koch curve is infinitely long. The von Koch curve intersects
the interval [0,1] at exactly the Cantor set, and at each end point E of the intervals removed in the
Cantor set construction (as described above) there is a corner of the von Koch curve. Keep in mind that the von
Koch curve is a continuous curve and that the Cantor set is dust! So the von Koch curve is
oscillating wildly (to put in mildly) along the interval [0,1]. That's what you need to do
to fit an infinitely long curve into an area of finite size!
Self-similarity (Chapter 3; pp 135-146). A set is self-similar if a small piece of it is an
exact replica of the entire whole (after expanding it and shifting it if necessary).
This implies that the set is infinitely complicated; the small piece, being a replica of the whole,
itself has a smaller piece which is a replica of the whole small piece, etc. We proved the
self-similarity of the Cantor set using ternary expansions, and noted the self-similarity of
the Sierpinski triangle and von Koch curve. Every fractal has this self-similarity (although
sometimes it is not so obvious - for example, the fractal tree
(also shown on page 242 of the text)). And, as we will see, many 'real' objects have some
self-similarity.
Measuring the complexity of curves (Section 4.2). Here we are after the exponent d
in the relation log[u(s)] vs log(1/s). Here, u(s) is the length of
the curve measured with rulers of size s (so if N(s) rulers of length s are
needed to measure the length of the curve, u(s) = N(s)*s). We sometimes say that "u(s)
is the length of the line at scale s".
The exponent d
is the slope of the (straight line part) of the curve that passes through the points when you
plot log[u(s)] against log(1/s) (see Figures 4.12, 4.18 and 4.20 in the
text). Note that if the data points (log[u(s)], log(1/s)) lie on a straight line of
slope d, then log[u(s)] = d*log(1/s) + b, so (taking the exponential of both
sides of this equation) u(s) = k*(1/s)d (here, k = eb).
That is, u(s) is proportional
to (1/s)d.
We saw that 'regular' curves have exponent d=0 and that 'fractal-like' curves
have positive exponent; d>0. If d=0 then the length of the curve increases at the
same rate at which the ruler used to measure the length shrinks (eg. if I shrink the size of
the ruler by 3 (so it becomes 1/3 its previous length), the number of rulers needed to measure the
length of the curve
goes up by a factor of 3 too, etc). However, if d>0 then the number of rulers needed to measure the
length of the curve increases at
a faster rate than the rate at which the scale s is shrinking (for example,
with the von Koch curve, if you shrink the scale by a factor of 3, the number of rulers
you need goes up by a factor of 4). You can see this from the formula
u(s) = c(1/s)d - so if you shrink the ruler from size s to size
s/m, then the length of the line at this smaller scale is u(s/m) =
c(1/(s/m))d = mdc(1/s)d = mdu(s); the
length increases by a factor of md (here we are thinking of m >1).
See also last year's commentary; 14 January and
21 January.
January 21
Fractal Dimension (or self-similarity dimension) (Section 4.3).
Here we are measuring the complexity of sets by covering them with small squares or cubes
and counting how many of these small squares or cubes are needed to cover the set. We then
shrink the size of these small squares or cubes and count again how many of these smaller
squares and cubes are needed to cover the set. Of course, since the squares or cubes are
shrinking in size we will need more of them to cover the set, but for some sets the increase
in the number of small squares or cubes is greater than for other sets. The rate of increase in the
number of small squares or cubes need to cover the set as they shrink in size is a measure of the
complexity of the set; as our scale decreases in size we see the same or even more detail
in complicated sets than for less complicated sets (i.e., 'regular' sets).
As for the length of curves, we expect a power law relation between the number of small
squares or cubes needed to cover the set, a(s), and the size (or scale) if the
small squares or cubes, s. That is, we expect a formula of the type
u(s) = c(1/s)D for some D > = 0 (D will be greater or
equal to zero since the number of small squares or cubes needed to cover the set increases
as the scale shrinks). The exponent D is called the fractal dimension of the set.
To compute the fractal dimension of a set, you choose an (appropriate) sequence of scales sn
such that sn -> 0 as n -> infinity,
and count the minimum number of squares or cubes a(sn) that are needed
to cover the set. Then you write a(sn) as a power law;
u(sn) = c(1/sn)D for some constant c
. The exponent D you find is the
fractal dimension of the set. Note that we would just write u(s) = c(1/s)D;
that is, just s instead of sn.
It's easy to calculate the fractal dimension of simple sets. For a line segment of length L
we choose the scales sn = L/n, n=1, 2, 3, ... and cover it with line
segments or squares or cubes of size sn. Here, a(sn) = n.
We can write n = L/n = L(1/sn)1 so that a(s) = L(1/s)1
and so we see that the fractal dimension for a line is 1. For a square of size L we
choose the same scales sn = L/n and cover the square with small squares or
cubes of size sn. Here, a(sn) = n2 =
L2(1/sn)2 so the fractal dimension of a square
is 2. For a cube we find that a(sn) = n3 = L3
(1/sn)3 so the fractal dimension of a cube is 3. With a bit of
help from calculus, we would find that the fractal dimension of any regular curve is 1,
the fractal dimensio of any regular area is 2, and that the fractal dimension of any
regular volume is 3. Thus, for regular sets the fractal dimension agrees with the
topological dimension.
However, the topological dimension doesn't say anything about the complexity
of a set, and that's what we are trying to study here (and what scientists in general
are studying when they study fractals and chaos). For example, the von Koch curve,
the Sierpinski triangle, and Peano's space filling curve (see pp 94) are all curves (i.e.,
they have topological dimension 1), but they are not anything like 'regular' curves
because they are infinitely complicated; when you zoom in on them they look the same.
Their complexity is reflected in their fractal dimensions; D = 1.26, 1.58, and 2 for
the von Koch, Sierpinski and Peano curves respectively - von Koch is the least
complicated of the three (but still infinitely more complicated than a regular curve),
Sierpinski is the next most complicated, and the Peano curve is the most complicated
of the three. In fact, the Peano 'curve' is more like an area than a line.
To get a better idea of what the fractal dimension is telling us about a set, let's consider the unit
square [0,1]2 and the grids of size sn = (1/2)n that cover
the square (the top part of Figure 4.30, pp 213, shows two grids). If A is any subset of
[0,1]2, then to calculate the fractal dimension of A we cover it with grids of various
sizes and count how many of the small squares of each grid (the minimum number) are needed to cover A.
Then we calculate the exponent D as described above. But let's go backwards and start with the
covering rather than with the set (let's remark that a covering at scale sn is just a selection
of small squares from the grid of size sn). A consistent covering is a selection
of covers from each grid size in such a way that
in the covering at any scale only the small squares that are within the squares choosen for the
covering at the previous step can be used. If you think about it, for any choice of consistent covering
there is a set A that has that covering.
Doing this allows us, for one thing, to find a set A
with prescribed fractal dimension. For example, if we wanted to find a set with fractal dimension
(log 3)/(log 2) = 1.58, we would just choose a covering that had a(sn) = 3n
squares at scale sn (because a(sn) = 3n = (1/sn)
D = (2n)D for D = (log 3)/(log 2).) An important observation is that
the fractal dimension only depends on the number a(sn) of squares choosen at
each scale and not on their arrangement. This implies that you can find many sets with
the same fractal dimension; just choose the a(sn) squares differently (but consistently!)
when making a new covering. You can also get an idea of what the set A looks like that has that
fractal dimension by sketching the coverings at smaller and smaller scales.
As an example, for each scale sn choose the 2n diagonal squares in the
grid. This is a consistent covering and you can see that the set A = diagonal line has this
covering. Since a(sn) = 2n = (1/sn)1, A has
fractal dimension 1 (which we knew already). But we can rearrange the 2n squares at
each scale in a consistent way to obtain the covering of another set B that also has fractal
dimension 1. In fact, you can choose the covering so that B is not a line at all but in fact
is dust!
Another thing we can do here is try to get some idea of how much you can vary a covering without changing
the fractal dimension. For example, suppose a1(sn) is the number of grid
squares used at scale sn for a covering that gives fractal dimension D1.
Suppose at each scale sn we remove k of the squares of that covering. Then we can
conclude that no matter how large k is the fractal dimension of the resulting covering is
still D1 (note that you could not begin removing the k squares until you reached a
small enough scale m so that a1(sm) > k). We prove this in the case when
the covering is for the entire square [0,1]2, so a1(sn) = 4n:
We start removing squares from the the original covering at some stage m where
k < a1(sm) = 4m.
Let a(s) denote the number of squares used at scale s in our new covering.
Then
a(sm) = 4m - k (so there are 4(4m - k) = 4m+1 - 4k
squares of size sm+1),
a(sm+1) = 4m+1 - 4k - k (so there are 4(4m+1 - 4k -k) squares
of size sm+2),
...
...
...
a(sm+p) = 4n - k(4p + 4p-1 + . . . + 4 + 1) =
4n - k(4p+1-1/3), (n = m+p).
So log a(sn) = log[ 4n - k(4p+1-1/3)]
= log 4n - log[(4n - k(4p+1-1/3)) / 4n]. Now, as
i tends to infinity, (4n - k(4p+1-1/3))/ 4n tends to 1 (note that
p+1 = n-m+1). Thus, log s(sn) -> log 4n as n tends to
infinity, and so the fractal dimension of our new covering remains 1.
In practice, the fractal dimension of a set is often measured by the box counting method. See the
Jan 21 commentary, W00 for discussion of this, and Section 4.4 of the text.
In class we watched the first half of the video, Fractals, An Animated Discussion (this video, and several
other videos about chaos and fractals, can be found in the audio-visual library at Robarts - this video has
call number 002948). This video was produced by the same people who wrote our textbook, and features
interviews with Benoit Mandelbrot and Edward Lorenz. Topics covered in the video include self-similarity,
chaotic dynamics, and Julia sets (some nice computer animations of Julia sets and the Mandelbrot set
are shown at the end of the video).
28 January
Box Counting Method for computing the fractal dimension (Section 4.4, pp 212-216; see also
the 21 Jan 2000 commentary). This is the method most often used in
practice to calculate (or rather, estimate) the fractal dimension of any geometric object.
We started on Iterated Function Systems (IFS). To motivate this we considered the Multiple
Reduction Copy Machine (MRCM) paradigm (see Sections 1.2 and 5.1 and the
28 Jan, 2000 commentary). This is a kind of photocopier that has
several lenses, each one reduces the size of the object it images, and then the resulting images
are arranged in some particular way on the resulting output. For example, the Sierpinski MCRM has
three lenses, each one reduces to 1/2 size, and the resulting three images are arranged at the
vertices of an equilateral triangle (see Figure 1.9). If you you feed the resulting image back into the
MCRM over and over again, the output begins to look like the Sierpinski triangle (see Figures 1.10 and
5.1). In fact, all fractals can be obtained this way.
What characterizes an MCRM (and an IFS) is its blueprint (see page 238). The blueprint is
simply the image of the unit square by the MCRM. For the Sierpinski MCRM the blueprint
consistes of three squares of size 1/2 arranged in an equilateral triangle (see Figure 5.9, for
example). If we indicate the orientation of the square by placing an 'L' in the top left
corner, then the blueprint tells us everything about the MCRM (and IFS); how many lenses are
involved, what each lens does (eg., shrink, rotation, reflection, etc.), and how the images
produced by each lens are arranged in the output. It's important to note that the fractal
produced by an MCRM (or IFS) is unchanged when imaged by that MCRM. This is really the
only way to determine what kind of image is produced by an MCRM or IFS (we will discuss this
more later).
I did some experiments/examples of IFS's using the applets and VB
programs available on the course webpage. Using the VB program Fractal Pattern,
we saw the iteration of the IFS's that produce the Sierpinski triangle, the von Koch and
square von Koch curves, and the Fern. We also looked at the IFS for the Cantor set and the
Cantor line set (Cantor set stretched into lines). The parameters for these two IFS's are
(since they are not in the menu);
- Cantor set:
- 1: (a, b, c, d, e, f, p) = (0.334, 0, 0, 0.334, 0, 0.334, 0.5)
- 2: (a, b, c, d, e, f, p) = (0.334, 0, 0, 0.334, 0.667, 0.334, 0.5)
- Cantor lines:
- 1: (a, b, c, d, e, f, p) = (0.334, 0, 0, 1, 0, 0, 0.5)
- 2: (a, b, c, d, e, f, p) = (0.334, 0, 0, 1, 0.667, 0, 0.5)
(The meaning of the parameters (a, b, c, d, e, f, p) will become apparent later.) Note that
the time taken to produce an image increases very quickly the more iterations you perform.
For transformations that have 3 lenses (labeled 1, 2, 3 in the program) you wouldn't want to
do more than 9 or so iterations. For 4 lenses you wouldn't want to do more than 8 or so iterations, and
for 5 lenses you wouldn't want to do more than 7 or so iterations. (Note that, since the small squares
are reduced at each iteration, in principle you would only iterate the IFS enough times so that
those squares became the size of a pixel on your monitor.) We saw that, unlike for the
Sierpinski triangle, von Koch curves, and Cantor set, the Fern fractal cannot be
drawn this way (too many iterations are required). We will see that the chaos game
is a more efficient way to draw fractals (Chapter 6).
I did some experiments with the Fractal Movie applet. In the Fractal Movie
applet you specify an initial (start pattern) IFS (or blueprint) and final (end pattern)
IFS.
The applet then interpolates
between the two, drawing the fractal produced by the intermediatary IFS's. For the first
experiment I simply took as initial IFS the Sierpinski IFS with top lens (#3) sitting all
the way to the left and final IFS the Sierpinski IFS with lens #3 all the way to the right. The
parameters were (only parameters for lens #3 need to be adjusted from the Sierpinski IFS
parameters obtained from the drop down menu);
- start 3: (a, b, c, d, e, f, p) = (0.5, 0, 0, 0.5, 0, 0.5, 0.334)
- end 3: (a, b, c, d, e, f, p) = (0.5, 0, 0, 0.5, 0.5, 0.5, 0.334)
Another experiment illustrated
the various 'relatives of the Sierpinski gasket' (see pages 244-251). I took as
initial IFS the Sierpinski triangle and as final IFS the IFS obtained by rotating the top
lens (#3) by 90 degrees counter clockwise. We saw the Sierpinski triangle 'break apart' before
forming another fractal. The parameters here were (again, only lens #3 needs to be changed);
- start 3: (a, b, c, d, e, f, p) = (0.5, 0, 0, 0.5, 0, 0.5, 0.334)
- end 3: (a, b, c, d, e, f, p) = (0, -0.5, 0.5, 0, 0, 0.5, 0.334)
I showed the 'spiral' fractal. This IFS has two affine transformations (two lenses);
- 1: (a, b, c, d, e, f, p) = (0.85, -0.31, 0.31, 0.85, 0.2, -0.1, 0.5)
- 2: (a, b, c, d, e, f, p) = (0.35, -0.2, 0.2, 0.35, 0.5, 0.4, 0.5)
Lens #1 is contraction by a factor of about 0.9 and then rotation by about 20 degrees, and lens #2
is contraction by about 0.3 and then rotation by about 30 degrees (plus suitable shifts so the
resulting squares are within the original square). (Note that you can just imput these rotations
and scalings directly into the VB program (in this case the two angles are the same and the two
scaling factors r and s are the same) and ask it then to 'compute parameters' of the
resulting matrix, i.e., the a,b,c,d. See page 235 of the text for a description of how to define a
transformation (matrix) using these parameters instead of the a,b,c,d.) To get some idea of how
these two transformations together produce a spiral fractal, I did some experiments with the
Fractal Movie applet. Here the start IFS is the one above (note that you have to specify 'user'
in the drop down menu before you input the parameters). First I just made the second lens slide
horizontally and vertically. For the horizontal slide I took end parameters to be;
- end 2: (a, b, c, d, e, f, p) = (0.35, -0.2, 0.2, 0.35, -0.2, 0.4, 0.5)
(the end parameters for #1 remain the same as the start parameters). Here the spiral opens up
as the image of lens two moves out of the image of lens 1.
For the vertical slide I took end parameters to be;
- end 2: (a, b, c, d, e, f, p) = (0.35, -0.2, 0.2, 0.35, 0.5, 0, 0.5)
Here you will see the spiral 'tighten up' as the image of lens 2 moves into the centre of the
image of lens 1 (think about it; if the image of lens 2 was in the exact centre of the image
of lens 1, the resulting fractal would be just a point). Another experiment to perform to help
you understand how the IFS generates a spiral, is to rotate the lens 2. For a 90 degree
rotation of lens 2 take the end
parameters to be;
- end 2: (a, b, c, d, e, f, p) = (-0.2, -0.35, 0.35, -0.2, 0.7, 0.6, 0.5)
(To obtain these parameters I just multiplied the start 2 matrix by the matrix that represents
rotation by 90 degrees, and then adjusted the shift parameters so the resulting image remained in
roughly the same position as the start image.)
Here you will see that the rotation of lens 2 controls the orientation of the small curls on the
spiral fractal.
Of course, no one wants to build a photocopier just to make a fractal, so we find a mathematical
representation of the MCRM - this is the Iterated Function System (IFS). In an IFS, a certan matrix
A represents the lens, and a certain vector v represents the 'shift' of placing the
image in the right position on the output. Thus, a lens L is represented by an
equation w = A + v. Review Section 5.2 to see how dilations (re-scalings),
rotations, and reflections are represented by matrices.
We looked at the problem of encoding an image as an IFS (see Section 5.5). Here we are
guided by the facts (which will be explained later) that if F is the image that is
eventually drawn by the IFS W, then W(F) = F. Now, W is made up of
several affine transformations wi of the form wi = A + v where A is a matrix and v
is a vector (the shift); W = w1 U w2 U . . .
wk (here, U denotes union - see page 238). So W(F) = F means that F = F1
U F2 U . . . U Fk where Fi = wi(F).
Since each Fi is a smaller copy of F (and perhaps rotated, reflected, or
sheared or a combination of these), we see that F is the union of
smaller (perhaps distorted) copies Fi of itself: the IFS builds in the self-similarity of F.
This allows us to find an IFS that draws F: break up F into k self-similar
pieces Fi. Then figure out what the affine transformation wi
are such that wi(F) = Fi. See also the
28 January commentary for W00.
February 4
The Contraction Mapping Principle (see Section 5.6 and
Jan 28 2000 commentary): If f is a contraction on the
space X, then there exists a unique fixed point p of f, f(p) = p, and if x is any point in X then
fn(x) -> p as n -> infinity. If A is a matrix, then if |det(A)|<1
A is a contraction (on Rn). Since 0 is always a fixed point of any matrix,
Anx -> 0 for any vector x. An affine transformation w = A + v is
a contraction if and only if A is a contraction. Hutchinson's Theorem (p 268):
If the wi are contractions on R2, then the IFS W = w1
U w2 U . . . U wk is a contraction on the space X
of images (i.e., bounded subsets of R2) where distance between images is measured
by the Hausdorff distance (p 268). And so this is why an IFS that is made up
of contractions wi converges to an image F under iteration no matter
what image you start with. Note that the image F is the fixed point of the IFS.
To find the fixed point of an affine transformation w = A + v, solve the equation
w(p) = p; p = A(p) + v for p. To find the fixed point of an IFS W, iterate
W beginning with any image S. However, as we will see, it may take the IFS
a very long time to converge to the fixed point - so in the next chapter we will consider another
method to ind the fixed point (final image) of an IFS. This is the problem of decoding
an IFS (see page 259-260).
We defined the Hausdorff distance h(A, B) between two sets A and B: see pages
268 - 269. For example, we showed that h(A, B) = 0 where A=[0,1] and
B is the set of rational numbers in [0,1], and that h(E, C) = 0 where
E is the set of end points of intervals removed during the Cantor set construction and
C is the Cantor set.
We discussed the Collage Game (Section 5.8). This is the problem of making an IFS that generates a certain image.
To begin with, we break-up the image into self-similar pieces and look for (affine) transformations
wi that produce these images (see the last paragraph of last week's commentary.)
In practice, the transformations wi are determinend interactively, i.e.,
by testing them to see what kind of image the IFS produces (see Fig 5.47) and then changing
the parameters (a, b, c, d, e, f) to obtain a better image. In addition to obtaining fractals
this way (in fact, the result will also be a fractal), one can obtain images that look
very much like `realistic' objects (see Fig 5.49 where an image of a leaf is reproduced by an
IFS with 7 lenses).
Decoding an IFS is the problem of drawing the image produced by an IFS
(see pages259-260 and 4 Feb W2000 commentary).
Recall that by Hutchinson's Theorem, if the wi are all contractions
on R2 with respect to the Euclidean metric (or norm, or distance;
these are all synonyms for metric), then the IFS W = w1 U
w2 U . . . U wk is a contraction on the space
X of images in R2 with respect to the Hausdorff metric, and
so iterating the IFS will ultimately lead to the fixed point F of the IFS.
However, the rate at which the iterates Wn(S) converge
to the image F delends on how much W contracts (with respect to
the Hausdorff metric). This could be so slow that it could take literally
forever to draw the fractal F this way. We can easily compute how
many iterations are required to draw the fractal F by first calculating how
many iterations are required for the initial image S (say, the unit square)
to be the size of one pixel (on your computer screen), and then calculating how
many images (squares, if S is a square) will be drawn after this many
iterations of the IFS. For Sierpinski, if S is a square 5002, then
because the contractions of the wi are 1/2, you need about 9
iterations before the initial square S is of size 1 (so, (1/2)9*500
<= 1). So the total number of squares drawn is 1 + 3 + 32 + . . .
+ 39 = (310-1)/(3-1) which is about 30,000. Assuming the computer can
draw 10,000 squares per second, the compter needs about 3 seconds to draw the Sierpinski
triangle. However, since the slowest contraction in the Ferm IFS is only .85, you
need about 39 iteations before the intial square S is 1 pixel small. The
number of squares drawn will 1 + 4 + 42 + . . . + 4 39
which is about 1023. To draw this many squares with your computer would
require more time than the age of the universe...... We will see in the next chapter
that another method to draw fractals, the Chaos Game, always works.
February 11
Fractal Image Compression. Compression means storing data on a computer
using the least amount of memory possible. Images contain a lot of data (8 bits per pixel
for grey-scale image, so a 512x512 pixel ('bitmap') image contains about 260KB (kilobytes;
1 byte is 8 bits) of data) so finding an efficient way to store them on a computer (and so
being able to electronically transmit them efficiently) is important. The JPEG image compression
standard can compress images by a factor of between 5 and 15 (depending on the image)
without perceptible distortion (so a 260KB bitmap image can be stored as JPEG file of
size around 18KB to 52KB). Fractal image compression takes advantage of the approximate self-similarity
present in most (natural) images. If an image was exactly self-similar, then you only
need the IFS that has that image as a fixed point to 'store' the image (everytime you want
to see the image you just run the IFS). An IFS is just a collection of numbers that define the
transformations wi, and they don't take up much memory. For example, the bitmap
of the Sierpinski triangle requires several hundred KB of data, the JPEG image would require
several 10's of KB of data, but the IFS requires only 3 x 6 = 18 numbers! (this is about 100 bytes)
Very roughly, the idea of fractal image compression is to partition the image into non-overlapping
'ranges' Ri (say, of size 4x4 pixels square) and then compare every 8x8 pixel square 'domain'
Dj of the image to each range Ri. Affine transformations wi
are applied to each domain Dj to try to match the Ri to Dj. Once a
satisfactory domain and transformation is found for that range Ri, you move on to the next
range Ri+1. When you are done with all the ranges you create a (big!) IFS
W = w1 U w2 U. . . U wk. When iterated (begining
with any initial image S) you will obtain an image that approximates the original image.
See the references for examples and more description. The best fractal image compression schemes have
compression ratios comparable to the best JPEG schemes today.
References: See S. Mallat's book A Wavelet Tour of Signal Processing, Second Ed. Section11.4
for more (technical) information about image compression. For fractal image compression
see Appendix A of the text (PJS), the book, Fractal Image Compression by Yuval Fisher,
the U of Waterloo website http://links.uwaterloo.ca,
and the reports by Andrew Dagleish and Farhad Sadaghaini
.
We then began the next chapter, Chapter 6: The Chaos Game. We have seen that iterating an IFS may
not be the best way to draw a fractal (in fact, the Fern fractal can not be drawn this way). The
problem there is that some wi of the IFS may contract too slowly.
A 'chaos
game' is an initial point z0, an IFS W = w1 U w2 U
. . . U wk, a set of probabilities p1, p2, . . . pk
(so 0 < pi < 1 and p1 + p2 + . . . + pk = 1),
and a 'random' sequence {s1, s2, . . . ,
sn} of numbers from the set {1, 2, ..., k} (i.e, each si is choosen
randomly from {1, 2, ..., k} according to the probabilities p1, ..., pk).
The sequence of points {z0, z1, . . . , zn}, where
zi = wsi(zi-1), is the outcome of the chaos game. We saw that several
thousand points zi are needed to see the fractal clearly (so n is usually
several tens of thousands - or even hundreds of thousands). The applets on the
software webpage use the chaos game to draw fractals.
(See the 21 Feb W2000 commentary for discussion of the chaos game.)
To understand why the chaos game 'works' (i.e., why it draws the fractal), we need to introduce the
notion of addresses on a fractal. If W = w1 U w2 U . . .
U wk is the IFS of the fractal F, then the region
wt1(wt2( ... wtm(F))...) (which we may sometimes write as
wt1wt2...wtm(F) - this is the composition of
the w's acting on F) of F has address
t1t2... tm. Note that you read an address from left to right
to locate the region with that address on the fractal,
but the transformations are applied from right to left. See pages 310-314 in the text.
Now note that if z is any point in the fractal F, then
wt1(wt2( ... wtm(z))...)
is a point in the region of the fractal that has address t1t2... tm
(because z is inside of F and the simple fact that if p is a point in a set A,
then w(p) is a point in the set w(A)). Thus, if we begin the chaos game with a point z0
in F, and if the random sequence {s1, s2, . . . , sn} is
used in the game (i.e., these si are the random numbers choosen), then
z1 is in the region of F with address s1 (because
z1 = ws1(z0)), z2 is in the region of F with
address s2s1 (because z2 = ws2(z1) =
ws2(ws1(z0))), z3 is in the region of F with
address s3s2s1 etc., and zn is in the region
of F with address snsn-1, . . . s2s1. So the
random sequence {s1, s2, . . . , sn} tells us the addresses of the
game points {z1, z2, . . . , zn} (but note that all we know about the
address of z1 is that it begins with s1, all we know about the
address of z2 is that it begins with s2s1, all we know about
the address of z3 is that it begins with s3s2s1,
etc; if we want more precise addresses of the game points than this we need to know the address of the
initial point z0).
A consequence of this is that if a certain string tmtm-1. . . t2t1
appears in the sequence {s1, s2, . . . , sn}, then we know that some
game point will land in the region of F with address t1t2. . . tm-1
tm.
Now we can explain why the game points {z1, z2, . . . , zn} eventually
(i.e., as n tends to infinity)
"fill" the fractal F. We will do the proof for the Sierpinski Chaos game.
To do this we pick any point p in T (the Sierpinski triangle) and any
small number d. We want to show that some game point lies within a distance d of p.
First pick m such that (1/2)m < d. Because each wi of the
Sierpinski IFS contracts by 1/2, any region on T with address of length k will be of
size (1/2)k, so any region of T with address of length m will be smaller than d. Let
t1t2. . . tm-1tm be the first m digits in the address of p.
Thus, p lies in the small triangle with address
t1t2. . . tm-1tm. Now, as explained above, if the string
tmtm-1. . . t2t1
appears in the sequence {s1, s2, . . . }, then some game point will land in
this small triangle with address t1t2. . . tm-1tm. Thus,
this game point will be within d of the point p (because this small triangle has size
(1/2)m). But why should the string
tmtm-1. . . t2t1 appear in {s1, s2, . . . }?
It appears because of the following fact about random sequences:
If p1, p2, . . . pk are the probabilities that the digits
1, 2, . . . , k are chosen randomly for the sequence {s1, s2, . . . },
then the string tmtm-1. . . t2t1 will appear in the sequence with
frequency ptmpt(m-1)...pt2pt1 (this is the product of the
probabilities ptm, pt(m-1), . . . , pt1.)
So as long as all the probabilities pi are non-zero, any and every (finite)
string will occur in the sequence {s1, s2, . . . } (because any product
of the probabilities will be > 0), and so there
will (eventually) be a game point that lands in that small triangle with address
t1t2. . . tm-1tm (the rub - and profound problem - is that,
although we know that any particular string will occur in the sequence,
we don't know how long we will have to wait before it occurs).
In short, a game point will land in every address region of the fractal because every string
that can be made from the digits {1,2,...,k} will appear (infinitely many times in fact!) in the sequence
{s1, s2, s3, . . . }.
See also page 317 in the text.
February 27
Recall that to play a Chaos Game, you need an IFS W = w1 U w2
U . . . U wk, a set of probabilities p1, p2, . . . , pk,
an initial game point z0, and a sequence of random numbers {s1,
s2, . . . , sn} where the si are chosen according to the
probabilities p1, p2, . . . , pk. Then one obtains the game
points {z1, s2, . . . , zn} according to the rule
zk+1 = ws_(k+1)(zk). All that was needed to prove that the game points
will eventually fill-out the fractal F (F is the fixed point of the IFS: W(F) = F) is
that every possible finite string of the digits 1, 2, ..., k appear in the sequence
{s1, s2, . . . } (we proved this using addresses of the fractal
F: the region Ft1...tm of F with address t1t2...
tm is the set Ft1...tm = wt1wt2...wtm(F)).
The probability that a certain string, say tmtm-1...t1, appears
in the sequence {s1, s2, . . . }, is the product of probabilities
ptmpt(m-1)...t1. So for example, if p1=.2,
p2=.3 and p3= .4, then the probability that the string 213 appears
in {s1, s2, . . . } is p2p1p3 =
(.3)(.2)(.4) = .024 (so this string will occur, on average, 2.4% of the time, or about 24 times in
every sequence of length 1000). Note that this means that 2.4% of the game points will fall in the
region with address 312.
So we can estimate the number of game points needed to fill-out the
fractal on our computer screen. Suppose we are playing the chaos game with the Sierpinski IFS and
the fractal fills the screen 512 by 512 pixels. Each wi contracts by 1/2, so
regions on F with addresses of length k will be of size (1/2)k*(512). When this product is
1, the regions are of size one pixel so we can not discerne regions with addresses of longer lengths.
In this example, address of length 9 will be 1 pixel in size. So we only need from our random sequence
all strings of length 9 made from the digits 1, 2, 3. Then we will draw the Sierpinski as accurate
as our computer screeen allows. So how long must the random sequence
{s1, s2, . . ., sn} be so that it contains all strings of length 9?
Well, the probability that the string t9t8...t2t1
appears is pt9pt8...pt2pt1. Since all the probabilities
pi are equal to 1/3 (in this case), the probability that any string of length 9 will
appear in the random sequence {s1, s2, . . ., sn} is
(1/3)9 or about 1/20,000. So the length, n, should be around 20,000 (we will need about 20,000
game points to draw the Sierpinski triangle). See pages 316-317 in the text.
We considered the "full triangle" IFS on the Modified Chaos Game applet.
Here there are 4 lenses. The first 3 lenses are the same as in the Sierpinski IFS, and the fourth lens fills the
triangle in the centre. When we play this chaos game we will generate a random sequence
{s1, s2, . . ., sn} of digits from {1,2,3,4}.
Since the solid triangle is a fixed point of this IFS (check!), the game points of the
chaos game with this IFS will eventually fill-out the solid triangle (try it). Now, if we remove all the
4's from the sequence {s1, s2, . . ., sn} we will be left with
a (random) sequence of digits from {1,2,3}. This sequence with the full triangle IFS will produce the
Sierpinski triangle (since you will be doing the same thing as you would with the Sierpinski chaos game).
Removing all 4's from the sequence {s1, s2, . . ., sn} means that
no strings containg a 4 will occur, which in turn means that no game point will land in a region of the
full triangle with address containing a 4. If you think about it, removing all regions with addresses that
contains a 4 will leave you with exactly the Sierpinski triangle (so the Sierpinski triangle is the full triangle
minus all the regions with addresses that contain a 4). Now instead of removing all 4's from the
sequence {s1, s2, . . ., sn}, what happens if we remove all occurences
of the string '12'? Then no string that conntains a 12 will occur, which means no game point will land in
a region of the full triangle with address containing a 21 in it. For example, you will see 'holes' in the
full triangle that correspond to regions with address 21, 211, 213, 121, 1121, 2111, etc. See the
Modified Chaos Game applet and the figure there. If you look closely you
will see that this is NOT a fractal. But it has some kind of self-similarity.
We discussed how to express the game rules of a chaos game in plain English. That is, starting with an
IFS, can you write-down the game rules in plain English? To do this, we first expressed the affine
transformations wi = Ai + (ei, fi) in terms
of just Ai and the fixed point qi. Since wi(qi)
= qi, Ai(qi) + (ei, fi) = qi,
so that (ei, fi) = qi - Ai(qi).
So wi = Ai + qi - Ai(qi) - this is the
affine transformation expressed in terms of just Ai and qi. So the
mathematical chaos game rule zk+1 = wi(zk) can be written as
zk+1 = qi + Ai(zk-qi), which in English
says, "standing on qi, go to Ai(zk-qi) to
obtain zk+1".
The next topic is adjusting the probabilities in the chaos game (Section 6.3). Suppose we play the
chaos game with the Sierpinski IFS, but instead of using equal probabilities
p1 = p2 = p3 = 1/3 (like we have been), we use the probabilities
p1 = p2 = 0.2, p3 = 0.6. Then 3 will occur in the random
sequence {s1, s2, . . . } 3 times as often as a 1 or a 2 will occur.
Consequently, game points will land in the region with address 3 (the top part of the triangle) 3 times as
often as they will land in the regions with address 1 or 2. So playing the chaos game with these probabilities
will result in the top part of the Sierpinsli triangle filling out more quickly than the bottom parts (try
this with the applet, or look at Figure 6.21 on page 324 of the text).
The proof that the chaos game draws the fractal only used the property that the
probabilities are non-zero, so the Sierpinski triangle WILL be drawn - but it will take a lot longer to
draw than if equal probabilities were used. We can go on. The string 13 will occur 3 times as often in
{s1, s2, . . . } as the string 12, so 3 times as many game points will land
in the region with address 31 than in the region with address 21. The string 133 will occure 9 times as
often in {s1, s2, . . . } as the string 122, so 9 times as many game
points will land in the the region with address 331 than in the region with address 221, etc. These kind
of calculations explain the image you see when you run the applet with these probabilities.
Adjusting probabilities (see Section 6.3 in the text).
For IFS whose transformations have all the same
rate of contraction, we saw that when the probabilities are all equal the
fractal is drawn most efficiently (over other, non-equal probabilities).
However, if the transformations have differing rates of contractions, then
we gave heuristic arguments to show that, at least in some approximation,
that choosing the probabilities pi such that the ratios p1/c1,
p2/c2, ... , pk/ck are all equal, and that
p1 + p2 + . . . pk = 1 (so that the pi's are
probabilities)
gave a good impression of the fractal (here we are
considereing regions of address length 1).
Here ci = |det Ai|,
the absolute value of the
determinent of the matrix Ai of the transformation wi,
is the factor by which wi
changes areas. The argument was to make the densities of points
in the parts of the fractal with addresses of equal length
the same.
(Density is number of points/ area of region; if N is the number of game points
used in the game, then the number of points in the region with address i is pi*N, and
if a is the area of the filled in fractal FF,
then the area of the region with address i is area of(wi(FF)) = ci*area of(FF)
= ci*a (see Figure 5.38 on page 280 of the text),
so density = (pi*N)/(ci*a); when we equate these together, we can cancel out the
common factors N and a; that's why we only need to consider the ratios
pi/ci.)
In class we calculated the
probabilities which gives equal densities of game points for all regions of the fern with address
length 1. However, even though the adjusted probabilities insure that the density of game points in each
region of address length 1 have equal densities, the densities of points within those regions (i.e.,
regions of address lengths greater than 1) may have non-equal densities. If you want to insure, in addition,
that regions of address length 2 have equal densities, then you will have to solve the equations
(p1p2/c1c2) =
(p1p3/c1c3) =
. . . . We also have to require that p1 + p2 + . . . pk = 1.
See pages 327-329, and Section 6.5 of the text for a discussion of the 'Adaptive Cut' method for drawing the
fractal very efficiently with the chaos game.
Playing the chaos game with sequences that are not random. See the
Chaos Game with Non Random Sequences handout (copies are also
available on my office door, SS1071B).
Recall that the only property needed of the sequence {si} in order that
the fractal gets drawn when using this sequence in the chaos game,
was that it contain every possible string of the integers {1,..., k} (where the
IFS has k transformations). Actually, if your computer screen can
only resolve detail down to level 'm' (i.e., addresses of length m are the
smallest areas you can see; they are about one pixel in size), then you only
need a sequence that contains all possible strings of length m (then a point
will land in each of these addresses when the chaos game is played with that
sequence). One can write down a sequence that contains all strings of length
m; the 'naive' sequence will be of length kmm . However, there will be
a lot of redundancy from using such a string in the chaos game (for
example, suppose we want to draw Sierpinski triangle to level 3, then the
naive sequence has 33 3 = 81 numbers, from which we will obtain 81 points.
However, there are only 27 addresses of length 3, so we only need 27
points). There are 'best' sequences that have no redundancies.
Such sequences have length km + m-2. Note this is about km
for moderately large m, which is smaller by a factor of m than the
length of the 'naive' sequences.
How well do random sequences do? As explained in the handout (and as you will see if you do Problem
# 15 on Homework #4), they do an intermediate job. That is, to draw a fractal to a certain degree
of completeness, the length of a random sequence needed to do this will be longer than the 'efficient'
(or 'best')
one but shorter than the 'naive' one.
Some references about these topics;
- A Probabilist Looks at the Chaos Game, by Gerald Goodman, in
the book, Fractals in the Fundamental and Applied Sciences,
edited by H.-O. Peitgen, J.M. Henriques, and L.F. Penedo.
- Rendering Methods for Iterated Function Systems, by
D. Hepting, P. Prusinkiewicz, and D. Saupe in the same book as
above.
I handed out a sheet of notes on this; copies are in the envelope on my office door (SS1071B).
I ran the chaos game using the full square IFS (i.e., an IFS with 4 lenses whose blueprint fills
the initial square). The fixed point of this IFS is clearly the full square. Since all contractions
are equal, the best probabilities used to draw this fractal are the equal ones;
pi = 1/4. We know that the chaos game with any (non-zero) probabilities
will (eventually) draw the full square, but you get vastly different intermediate patterns if you
choose non-equal probabilities. For example, choose instead p1=p2=.4 and
p3=p4=.1 (here, lens 1 is in the bottom left corner, lens 2 is in the
top left corner, lens 3 is in the top right corner, and lens 4 is in the bottom right corner - just
as they are on the Chaos Game and Fractal Movie applets), you will see a whole series of vertical lines.
We can understand this pattern by realizing that most of the time, the sequence is just 1's and 2's (in fact
80% of the time) so points will move towards the fixed point (the line) of the IFS made of just
lens 1 and 2. But whenever a 3 or 4 comes along in the sequence, the game point (which is lying very
near that vertical line on the left edge) will jump towards one of the corners on the right edge
of the square (these are the fixed points of the lenses 3 and 4). They will move 1/2 the distance towards
them, in fact (lenses are contractions by 1/2). Thus, they will lie along the vertical line at
x = 1/2. The vertical line at x=3/4 is caused by game points on the line x=1/2 under one of the
transformations 3 or 4 (which move them again 1/2 the distance towards the fixed points). That's
why you see a whole series of vertical lines at x=1/2, x=3/4, x=7/8, x=15/16, .... Homework
problem #10 in Homework #4 is similar to this.
March 4
Dynamics. As an introduction, read the preface to the text, Sections 1.4 and 1.5,
and the introduction to Chapter 10 (pp 507-508).
Pages we will cover in Chapter 10; 509-515, 520-527, 536-567, 576-580.
For graphical iteration, see pages 57-59 and Figures 11.8, 11.9, 11.16.
Handouts: Graphical Analysis,
and Experiments with the Logistic Function.
The dynamics part of this course will be restricted mostly to discrete dynamical systems in one
dimension or two dimensions, i.e., sequences {x0, x1, x2, . . . } where
the xi are in R (one dimensional systems), or in R2 (two
dimensional systems). (When we study Julia sets we will be considering discrete dynamical systems where
the xi are in C, the complex numbers). The
sequences will be deterministic, that is, they will be produced by a well-defined "rule" or
"law", usually of the form xn+1 = f(xn) for some function
f(x). That is, these dynamical systems are obtained through iteration of a function:
x1 = f(x0), x2 = f(x1) = f ( f (x0)) =
f 2(x0), . . . , xn = f n(x0), . . .
(note that f n(x) denotes the n-fold composition of f, not the
nth power of f). The orbit of a point x is the sequence
{x0=x, x2, x3, . . . } with initial point x. The orbits of f
is the collection of orbits obtained by choosing different initial points x0.
Although these types of dynamical systems may seem 'simple' when compared to systems
like the weather or stock market, in fact they show just as much 'complexity' as these other systems,
and in fact a careful study of one dimensional discrete systems has provided many of the discoveries
in so-called chaos theory. Most of the time we will study one particular one dimensional
system defined by the
logistic function; fa(x) = ax(1-x). Here, a is a parameter that
varies between 0 and 4. You can check that if a is in this range, then if x0
is in [0,1], all the points x1, x2, . . . in the orbit of x0
will lie in [0,1]. And that
if x0 lies outside [0,1], then xn tends to minus infinity as n
tends to infinity. (You can see these properties easily with graphical iteration.) Thus, we will
study orbits {x0, x1, x2, . . . } of points x0
generated with the
logistic function (via xn+1 = fa(xn)) where
x0 lies in [0,1]. We saw, using the VB program Time
Series (see also the handout Experiments with the Logistic
Function for examples), that there is a wide variety of behaviour of the orbits of the logistic
function as the parameter a is varied.
Our main tools for studying these systems are;
- Time-series. This is a plot of xn vs n. See the handout,
Experiments with the Logistic Function, and Figures
10.1, 10.2, 10.3, 10.7, etc. for examples.
- Histograms. Here you divide up the interval [0,1] into small sub-intervals ('bins')
and count how many points from the sequence {x0, x1, x2, . . . }
lie in each sub-interval. See the handout, Experiments with the
Logistic Function and Figures 10.17, 10.19 for examples.
- Graphical iteration. This is a graphical way to visualize the orbit
{x0, x1, x2, . . . }. It allows us to understand many features of
the sequence. See the handout, Graphical Analysis, and Figures
10.4, 10.5, 10.6, 10.12, 10.16, for examples.
The VB program Time Series generates time series and histograms for
the logistic function, and the applet Graphical Iteration performs
graphical iteration for the logistic function and its iterates. Use the applet
Bifurcation to see how the shape of the graph of the logistic function and its iterates changes as
the parameter a varies.
We observed a variety of behaviour of the orbits of the logistic function (see the handout,
Experiments with the Logistic Function). We saw fixed point behavior -
that is, the xn approach a fixed point p of the logistic function (so
fa(p) = p), periodic orbits (of various periods) - that is, the numbers xn
repeat themselves after a certain period, and 'chaotic' orbits where the numbers xn seem
to fill out the entire interval [0,1] (or at least some sub-interval of [0,1]). Note that if x is
a periodic point of f of period k (that is, f k(x) = x so that the orbit
of x = {x, x1, x2, . . . , xk-1, xk = f k(x)
= x, x1, . . . } repeats itself after every k steps), then x is also periodic of period 2k, and
3k, etc. The smallest integer m such that a point is periodic with period m is
called the prime period of the point. So if a point is periodic with prime period m, then
the point is also a periodic point with all periods that are integer multiples of m, and the
point is not periodic with a period equal to any integer less than m.
Comment on terminology: When we call a point x a periodic point, we mean that its orbit
{x = x0, x1, x2, . . . ,} is periodic.
To study these behaviors systematically, we introduce some notations and definitions (see the handout,
Graphical Analysis). Among the fixed points are the stable and
unstable fixed points. If the initial point x0 is near a stable fixed point, the
points in the orbit x1, x2, . . . of x0 will approach the fixed point.
If the initial
point is near an unstable fixed point, the points in the orbit will move away from the fixed points. (Note
that a fixed point need not be stable or unstable.)
We have an analytical criteria for stability of fixed points; if |f'(p)|<1, then p is a
stable fixed point, and if |f'(p)|>1, then p is an unstable fixed point. For stable fixed
points, the stable set (or basin of attraction)
Ws(p) is the set of all points x whose orbits
approach the fixed point. For periodic points we have a similar criteria for stability and instability; if
x is a periodic point of period k, then the orbit of x is stable if
|(f k)'(x)| < 1 and unstable if |(f k)'(x)| >1 (a stable periodic
orbit attracts orbits that start nearby, while orbits starting nearby unstable periodic orbits move
away from that orbit). See the handout Experiments with the Logistic
Function for examples of stable fixed points and stable periodic orbits (pages 1 and 5), and unstable
fixed points and periodic orbits (page 8).
Another important property of orbits of a function f(x) is their sensitivity to changes in the
initial point x0. That is, if we make a small change to the initial point, say
x0 + e where e is a small number, is the orbit of x0+e
similar to the orbit of x0? If it is, then the orbit is 'robust' under small
perturbations and we don't have to worry about reproducing the initial condition (that's
x0) exactly to reproduce
(essentially) the same orbit. However, if the orbit changes drastically under small perturbations in the
initial condition, then unless we can reproduce the initial condition (essentially) exactly, we won't be
able to reproduce the orbit of x0. For some functions f(x), the orbits are
extremely sensitive to changes in initial conditions. So much so that the systems appear random because
seemingly identical initial conditions produce different orbits (in the long run). We saw that for
0 < a < 3.5 (or so), all orbits of the logistic function are not sensitive to
changes in initial conditions (because all orbits approach the stable periodic orbit). However, for a
greater than about 3.5, orbits can be very senstive to initial conditions. In fact, for a=4, errors
in initial conditions roughly double with each iteration of f, so pretty soon orbits that started off
very close to each other look very different. See page 6 of the handout,
Experiments with the Logistic Function and Section 10.1 in the text.
To find a periodic point of f(x) of period k you can solve the equation
f k(x) = x for x. However, this could be difficult, and even impossible analytically
(although you could still get an approximate solution using Newton's method, for instance). It is an easy
matter though to draw the graph of f k(x) and just see if it intersects the diagonal
y = x. If it does, then clearly this point is a periodic point of f of period k.
March 11
Symbolic dynamics (Section 10.6)
We study the logistic equation for a=4; f(x) = 4x(1-x).
Looking at the time series of orbits of f(x), we see that they all fill out the interval
[0,1]. It appears that there is no 'order', i.e., that there are no periodic orbits. However, we know that
there certainly are because if you draw the graph of f k for k = 1, 2, 3, . . .
you see that there are many places where the graph of f k intersects the diagonal y=x
(see the diagrams included in Homework #5),
so these points are period k points (and so generate orbits of period k - of course some
of these points may not be prime period k; but some are). We also notice from the graph of
f k that the slope of f k at any one of these points of intersection
with y=x is greater than 1 in absolute value, so none of these periodic points are stable. So in fact
f(x) has infinitely many periodic points, of all periods, and all of them are unstable. So if you
wanted to observe one of them experimentally, i.e., numerically with a computer (eg. time series), you would
need to know very well what these points are. One way to do that is to solve the equation
f k(x) = x - but this means finding a root of a 2 k -1
degree polynomial, and if k > 2 there is no analytic formula for them so you would have to estimate
them by solving with Newton's method (for example). We can find the exact values of these periodic
points another way - using symbolic dynamics. Symbolic dynamics is a very useful technique for studying
complex systems.
To use symbolic dynamics to study the logistic equation, we first start with the tent transformation T,
and to study the tent transformation we study the map T ~ which acts on binary sequences. The map
T ~ was defined to mimic the action of T, but on the binary representation of numbers.
We saw that T ~ has a shift or a shift-then-conjugate action on sequences. So to find periodic points
of T ~ we look for (binary) sequences that repeat themselves after k iterations of
T ~. Then we convert this sequence to a number x - and this number then is a periodic point of T.
Finally, to obtain a periodic point for the logistic function we map this x to the number
x'= h(x)= sin 2(pi*x/2). Then x' is a periodic point of f.
See the March 10, W00 commentary for more details.
Using this method we found the period 2 point 0.011(0011) of T ~ (remember that (abcd) means repeat the
pattern abcd), which converts to the number 2/5 ( i.e., [2/5]2 = 0.011(0011))
which is a period 2 point for T, which in
turn converts to the period 2 point h(2/5) = 0.345491502814.... for f(x).
You can check that 0.00011110(00011110) is a period 4 point of T ~, and since
[30/255]2 = 0.00011110(00011110), 30/255 is a period 4 point of T (check!), and
so h(30/255) = 0.0337638852976 is a period 4 point of f(x) - you can check this with
the VB program Time Series or the applet Graphical Iteration. If you do you will also see that this
orbit is indeed unstable.
March 18
Symbolic Dynamics (continued), Shadowing Lemma.
Using symbolic dynamics (for the map T ~
and then transfering it to the logistic function via F and h) we showed that the
logistic equation has periodic points of all periods (prime), that
periodic points are dense in [0,1], and that there is an ergodic orbit (in fact, 'most' points in [0,1]
are ergodic points for the logistic function). See the 10 March, W00
commentary.
We discussed the Shadowing Lemma (see page 577,588 and 10 March, W00
commentary).
March 25
Bifurcation and Final-State Diagrams
Pages covered in Chapter 11 for this topic: 585-597, 603-605, 608-612, 616-618, 625-627, 636-638.
We recalled the period-doubling bifurcation and saw why this happens by looking at the graphs of
fa and it compositions as a varies (eg. Figure 11.20). (A period-doubling
bifurcation is when a period k orbit changes into a period 2k orbit as a is
varied; see the Experiments with the logistic function handout.)
One way to visualize the behaviour of the periodic points as a varies is to draw a bifurcation
diagram. This is a plot of the periodic points pa vs a; see Figure 11.17
and page 6 of the handout Graphical Analysis. The
final-state diagram is a plot of the 'final-state' of an orbit vs a (see page 603). This
is similar to the bifurcation diagram, but only stable periodic points are plotted on a final-state
diagram, as are ergodic orbits. The final-state diagram is computed experimentally, i.e., with a computer,
and for the logistic equation shows a wealth of interesting structure (Figure 11.5). We will spend the
next lecture studying it and explaining some of that structure.
The self-similarity of the final state diagram for the logistic function can be explained by
studying the iterates of f a for various values of a (see pages 625-627 and 638).
In particular, within the periodic 'windows' of the final state diagram (eg., the period 3 window near
a = 3.85) we see replicas of the entire final-state diagram (see Figure 11.41, p637). So to understand
the structure inside the period 3 window near a = 3.85 for example, we look at f 3 at a
near 3.85; Figure 11.42. The graph of f 3 intersects the diagonal line at three
places; near x=0.15, x=0.5 and x=0.95. At each one of these places the part of the
graph of f 3 resembles a miniature graph of f, and as a varies over the
range 3.83 to 3.85, those pieces of f 3 resemble the graph of f as a varies
from 2.8 to 4. Note too the invariant box surrounding each of those pieces of
f 3 (Figure 11.42); if the initial point x0 lies inside the invariant box, then
all iterates under f 3 remain inside those boxes (you can check this for yourself
using the Graphical Iteration applet). Thus, we see why there are
miniature final-state diagrams inside each period window. See the page,
The Self-Similarity of the Logistic Function.
We also discussed universality and Feigenbaum's constant (see pp 611-618, 625-627 in text).
If g is any 'unimodal' function defined on the interval [0,1]
(unimodal means 'one bump' - see page 616), then the family of functions ga(x) = ag(x)
look similar to the logistic family fa(x) = ax(1-x). Increasing the value of a
makes the 'bumps' in the graph of the iterates of ga larger, and so we expect there to
be period-doubling bifurcations as with the logistic family. In particular, we looked at the function
ga(x) = ax2sin(Pi*x) and its iterates and saw why it would go through
period doubling bifurcations (go to this page to see the graphs).
This also explains why the final-state diagram for this function looks similar to the final-state
diagram of the logistic function (Figure 11.23). In fact, the final-state diagrams of any unimodal
family of functions look like the final-state diagram of the logistic family.
So although it is no mystery why all unimodal maps go through period-doubling bifurcations like
the logistic function, it is remarkable that the rate at which unimodal maps go through
the period-doubling
bifurcations (i.e., the distance (in a) between one bifurcation and the next) is the same for
all such families of function. This rate is defined as the Feigenbaum constant d = 4.699....
and universality refers to this common rate of bifurcation. A great many diffferent mathematical
and physical
systems exhibit such universal behavior (see page 618).
See the 17 March, W00 notes for more commentary on these
topics, and also the hand-out,
Notes on the Logistic Function - Self-Similarity and
Universality, page 1.
April 1
Final-State Diagram of Logistic Function
We studied the structure of the final-state diagram of the logistic function (see Figure 11.5, p 591).
For a values less than the 'Feigenbaum point' s infinity = 3.5699.... (p.612),
the logistic family f a(x) = ax(1-x) goes through a series of period-doubling
bifurcations at a values b1=3.0, b2=3.449, b3=3.544,
. . . . For a values greater than sinfinity, the final-state diagram is made of
ergodic behaviour or periodic orbits. The main features here are;
- self-similarity: we see miniature versions of the complete final-state diagram inside the periodic
windows (see Figures 11.3 and 11.41, on pages 589 and p637),
- 'periodic windows' where there is a stable periodic orbit. These 'windows' are scattered throughout
the diagram (in fact, there are infinitely many of them),
- 'shadow lines'; smooth, curving lines that are superimposed on the diagram.
We can explain most of these features (see the handout,
Notes on the Logistic Function - Self-Similarity and Universality). As described in last week's
commentary, pieces of the graph of f k resemble the graph of f at certain
paremeter a values, so we expect the orbits in those regions to behave in a similar way (Universality
again). The shadow lines can be explained by the 'squeezing' effect of the top of the parabola on
points near 1/2; see page 3 of the Self-Similarity of the Logistic handout, and Figures 11.38, 11.39.
The shadow lines can be computed by plotting the graphs of the iterates of fa(va).
See: plots of the shadow lines of the logistic function.
I ran some histogram movies of the logistic function with the
Logistic Movie applet. We saw how the shadow lines appear as spikes in
the histograms (see also for example Figures 11.35, 11.36 p631,632), and we noticed how periodic windows
would appear and then quickly 'disappear' through the period-doubling route to chaos. Two windows
we looked at were a period 3 window near a = 3.838 and a period 4 window near a = 3.9604
(this last one is very thin, so set delta a to be smaller than 0.00005 on the applet).
We studied Charkovsky's ordering of the integers (p 639) and Charkovsky's Theorem: If f has
a point of period k, then f has a point of period m for every m such that k >> m in the
Charkovsky ordering.
See also the 16,19, and 23 March commentaries from W01, and
the 17 March commentary from W00.
Two-dimensional dynamical systems
See the handouts
Two Dimensional Dynamics and the Henon Map and Experiments
with the Henon Map. Read Section 12.1 in the text and the 12 March, W00
and 26 March, W01 commentaries.
The Henon map is a function H(x,y) defined on R2; it takes the point
with coordinates (x,y)
to the point with coordinates H(x,y) = (y +1-ax2, bx), that is, the x-coordinate of
the point H(x,y) is y +1-ax2, and the y-coordinate of the point H(x,y)
is bx. There are two parameters a and b which, when they are varied, produce
different dynamics (orbits) of H. An orbit of H is a sequence of points
(xn, yn) = Hn(x0, y0) where
(x0,y0) is the initial point of the orbit.
As with any discrete dynamical system (in any dimension), the main object to study are the periodic
points (orbits) and their stable sets. We also distinguish invariant sets. These are
sets A that remain inside of A under iteration by H: H(A) in A.
Periodic points satisfy the equation Hk(x,y) = (x,y). The time series of orbits
of a two-dimensional system are points in the plane R2. A fixed point has a time series
which is just one point (itself); a period two orbit has a time series which is just two points, a
period 3 orbit is just three points, etc. An orbit which is not periodic would have a time series of
infinitely many (different) points. These points could be distributed throughout the plane in an
arbitrary manner. One can look at the histograms of orbits by plotting either the xn
or yn
coordinates of the points in the orbit vs n (see the handout, "Experiments with the Henon Map").
The Henon map goes through a series of period-doubling bifurcations when b is fixed and a
varies: see the handout "Experiments with the Henon Map". As we saw with the logistic function, the
time series of orbits split (double) at every bifurcation point. We can make a final-state diagram
(and bifurcation diagram) for each coordinate x and y. It turns out that for the Henon
Map, for b = 0.3 and a varying, the final-state diagram (for x) looks very much
like the final-state diagram for the logistic function (seee Figures 12.15 and 12.16 on pages 675, 676).
We see self-similarity in the final-state diagram, period-doubling branches, ergodic orbits (they fill
out the 'bands'), and periodic windows within these ergodic bands.
And in Figure 12.16 we see the
'shadow lines' that we noticed in the final-state diagram of the logistic function. Using our knowledge
of how these lines arose in that case, we can understand where the shadow lines come from in the Henon
final-state diagram. To do this we need to look at the equation determining the dynamics of the
x coordinate. Going back to the definition of H(x,y), we see that
xn = f(xn-1) where f(x) = -ax2 + bx - 1. Where this
quadratic f has its vertex is where the xn are 'squeezed'. By following the
orbit of these squeezed points we would trace out the shadow lines.
For parameter valus near b=0.3, a = 1.4 the Henon map has a "strange attractor" S. This
set S is obtained by iterating H(A) where A is a certain invariant set in
R2: see pages 661 - 665. Orbits on S behave chaotically, i.e., they
exhibit sensitive dependence on initial conditions and they 'fill out' the attractor S (so
by plotting just one orbit in S we get a picture of the entire set S). The attractor
S is 'strange' because it has a fractal-like structure; see Figure 12.12. See the applet
Henon Movie for an animation of an orbit on the attractor. The
basin of attraction of S is a large set in R2 that stretches out to
infinity (Figure 12.8). The orbit of any point in this set approaches S, while the orbit of any
point outside this set goes off to infinity. So the long-term behavior of orbits of H is
determined by the set S. This strange attractor is actually an infinitely long curve that
has been stretched and folded infinitely many times by H (see Figures 12.3, 12.4) to give it
its fractal-like structure. A point on this curve moves along the curve under iteration by H, so
as far as the point is concerned it is moving along
very simply under iteration by H by
following this (one dimensional) curve, but this curve has such a wild and complicated shape
(in two dimensions) that the dynamics of the
orbit appear very complex to us (who are observing it in two dimensions). This is an example of how geometry determines the behavior of
dynamics (this is a common theme in dynamical systems).
April 8
Julia Sets
Pages in text covered: 776-785, 787, 789-799, 820-825, 826--832.
After a brief introduction (review) to complex numbers (see handout
Complex Numbers and Section 13.2) we discussed complex dynamical systems. These are discrete
dynamical systems obtained by iterating a complex function f(z), where z (and hence
f(z)) are complex numbers. Complex numbers can be thought of as two dimensional real numbers because
we can represent them as a vector z = (x,y) where x is the real part of z
and y is the imaginary part of z (we write z = x+iy). So complex dynamical
systems can be thought of as two dimensional real dynamical systems.
We ask the usual questions about a complex dynamical systems: What are the periodic orbits? Or more
generally, the invariant sets? What are their basins of attraction? The point infinity is always
an attracting fixed point of f(z) if f is a polynomial. The competition between
the stable (attracting) periodic orbits define the boundaries of their basins of attractions. These
boundaries can have a very complex structure and usually are fractal-like.
The complex quadratic map is the function qc(z)= z2+c where c is a complex
parameter. This function is the complex version of the logistic function. The prisoner set
Pc are those complex numbers whose orbits remain
bounded under iteration by
qc, and the excape set Ec are those points whose orbits go off to infinity
(so they are
in the basin of attraction of infinity). The boundary of the prisoner set is called the
Julia set and is denoted by Jc.
We study, then, the
bifurcation diagram of qc(z), in the sense that we study how the prisoner set
changes as the parameter c changes (and so how the Julia set changes).
For polynomials f(z), the Julia set is either connected (one piece) or totally
disconected (dust).
Drawing Julia sets of qc either by encirclements (see pages 795-797)
or by the chaos game using the nonlinear IFS
q-1= W1 U W2 (see pages 820-824).
See also the March 28, W00 commentary and the
March 29, April 2, W01 commentary.
The Mandelbrot set
Pages covered in the text: 841-846, 855-858, 862(bottom half) -870(upper half; Fig 14.23), 878-879, and
all the figures related to those pages.
See also the handouts Notes on Julia Sets and the Mandelbrot Set,
and Diagrams of Julia and Mandelbrot Sets.
Topics covered;
- Definitions of the Mandelbrot set M (we mentioned two)
- Theorem of Fatou and Julia: If 0 in Ec then Jc is dust, and
if 0 in Pc then Jc is connected
- Relation with the real quadratic map x2 + a (here x and
a are real numbers), in particular, the
proof that M contains the (real) line segment [-2, 1/4] (because the prisoner set of
x2 + a is empty when a > 1/4, is dust when a < -2 , and is a line
segment when -2 =< x =< 1/4)
- The general shape of the Mandelbrot set
- Explaining the "bulbs" of the Mandelbrot set (via the fact that if qc(z)
has a stable periodic orbit, then Pc is has area, and so
Jc must be connected):
- Calculations of the period 1 main body and the period 2 bulb
- Method to calculate period k bulbs
- The Mandelbrot set as a "road map" of Julia sets (like they describe in the text, Section 14.3).
We watched the second half of the video, "Fractals: An Animated Discussion"
(available at the Audio-Visual Library, call number 002948).
I demonstrated the XAOS software that draws Julia sets and the Mandelbrot set (and other sets).
You can find this software at the XAOS website: http://xaos.theory.org.
See also the 7 April, W00, commentary and the
6 and 9 April, W01, commentary.
Back to the top