21
Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer. It is easy to use Mathematica for computing tables of values of fn(x), graphing functions, and graphical analysis. It is also easy to use Mathematica to generate bifurcation diagrams, the Mandelbrot set, or Julia sets, but it is harder to do so in a reasonable amount of time. The Mathematica code included here is fairly efficient and works reasonably well as long as one doesn't try to use too fine a grid. Anyone interested in using Mathematica to create a large number of images of bifurcation diagrams, the Mandelbrot set, or Julia sets should seriously consider learning how to use MathLink for the implementation of Mathematica being used. Us- ing MathLink as described by W. Shaw and J. Tigg in their text Applied Mathematica can decrease the necessary computational time by at least an order of magnitude; their text is listed in the references. Finally, we note that the author has not stopped working on improving his Mathematica code. To get copies of his latest code, contact the author directly bye-mail at [email protected] or surface mail at Department of Mathematics, Allegheny College, Meadville, PA 16335. Also, you can look for the code in MathSource, a world wide web site at www .wri.com.This site is maintained by Wolfram Research, the makers of Mathematica and the author expects to archive his code there.

Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

Appendix Mathematica Algorithms

Most of the computations for this text were done by Mathematica on a NeXT computer. It is easy to use Mathematica for computing tables of values of fn(x), graphing functions, and graphical analysis. It is also easy to use Mathematica to generate bifurcation diagrams, the Mandelbrot set, or Julia sets, but it is harder to do so in a reasonable amount of time. The Mathematica code included here is fairly efficient and works reasonably well as long as one doesn't try to use too fine a grid. Anyone interested in using Mathematica to create a large number of images of bifurcation diagrams, the Mandelbrot set, or Julia sets should seriously consider learning how to use MathLink for the implementation of Mathematica being used. Us­ing MathLink as described by W . Shaw and J . Tigg in their text Applied Mathematica can decrease the necessary computational time by at least an order of magnitude; their text is listed in the references.

Finally, we note that the author has not stopped working on improving his Mathematica code. To get copies of his latest code, contact the author directly bye-mail at [email protected] or surface mail at Department of Mathematics, Allegheny College, Meadville, PA 16335. Also, you can look for the code in MathSource, a world wide web site at www.wri.com.This site is maintained by Wolfram Research, the makers of Mathematica and the author expects to archive his code there.

Page 2: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

204 Appendix. Mathematica Algorithms

A.!, Iterating Functions

Finding the Value of a Point Under Iteration. The easiest way to iterate functions with Mathematica is to use the Nest command. The format is

Nest [function, start value, number of iterations].

In the following example, we define f(x) = x 3 and then iterate f three times starting at 1.2:

Clear[f,x] ; f[x_] := x-3; Nest [f, 1. 2,3]

The output is 137.371. NestList [ ... ] will show the value of the first n iterates. The format

is similar to that of Nest. The following commands compute the first three iterates of 1.2 under f(x) = x 3 :

Clear[f,x] ; f [x_] := x-3; NestList[f,1.2,3]

The output is {1.2 , 1.728,5.15978, 137.371}.

Tables of Iterates. We use the next set of commands to generate a table of iterates. In the first two lines we define the function. Next we ini­tialize variables for the starting value, the first iterate printed, and the last iterate printed. The last block of code is a short Mathematica program that does the actual computation. In this example, we are using a While [ .. . ] loop to tell Mathematica to iterate the function h(x) = 3.5x(1 - x) begin­ning at .1 and to print the values of the 10th through 20th iterates. Note the use of the command N [ .. . ] to ensure that we start at a numerical value. If the initial value is expressed as a rational number, for example, 2/3, Mathematica will use arbitrary precision arithmetic and this computation will take a very long time.

Clear[h,x,i,y] ; h [x_] : = 3. 5x (1 - x);

StartingValue = . 1; Firstlteration = 10; Lastlteration = 20;

i=O; y = N[StartingValue]; While[i <= Lastlteration,

If[ i >= FirstIteration,Print[i , " ",N[y,8]]];

Page 3: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

y = h[y]; i = i+l ]

The output of this program is as follows:

10 0.86414351 11 0.41089828 12 0.84721309 13 0.45305075 14 0.86728519 15 0.40285557 16 0.84197036 17 0 . 46569696 18 0 . 87088155 19 0 . 39356405 20 0.83534986

A.!. Iterating Functions 205

Controlling the Precision of the Computations. For some of the exercises in this text , we need to be able to control the precision of the computations. We use the Mathematica command SetPrecision, which writes an expression to n significant digits, adding zeros or rounding as necessary. The format is

SetPrecision[expression,n]

Zeros are added are in binary, so the base ten representation of the new number will not necessarily end in zeros. In the commands that follow, the variable SigDigi ts controls the amount of rounding:

Clear[h,x] ; h[x_] : = 3.5x(1-x);

StartingValue = . 1; Firstlteration = 10; Lastlteration = 20; SigDigits = 64 ;

i=O; Y = SetPrecision[StartingValue,SigDigits]; While[i <= Lastlteration,

If[i >= Firstlteration,Print[i," " , N[y,8]]]; y = SetPrecision[h[y] ,SigDigits] ; i = i+l]

As the function h(x) = 3.5x(1 - x) is not sensitive to small changes in initial conditions, the output of this program is the same as that of the preceding program.

Page 4: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

206 Appendix. Mathematica Algorithms

Graphing Iterated Functions. For some of the exercises, we need to graph the iterate of a function. For example, in Exercise 8.9, we are asked to graph T2 where

T(x) = {2X' for x in [O , ~] 2 - 2x , for x in [ ~, 1].

We accomplish this with the following program:

Clear[T,x] ; T[x_] := If[x<= . 5,2x,2 - 2x];

xmin 0; xmax 1;

NumberOflterations = 2;

Plot [{Nest [T,x,NumberOflterations] ,x}, {x,xmin,xmax}, PlotRange->{xmin,xmax}, AspectRatio->l]

Note the use of an If [ ... ] statement to define T(x) . The variables xmin and xmax denote the endpoints of the domain. NumberOfIterations = 2 tells the program to compute the graph of T2. If we replace the 2 with a 3 it will graph T3. We use Plot and Nest to draw the actual graph. Since we are looking for fixed points of T2, we draw in the line y = x as well. In the second line of the Plot command, we define the domain of the function to be graphed. PlotRange->{xmin,xmax} tells the computer that the codomain shown should be equal to the domain. Finally, AspectRatio->l makes the graph square. The output is shown in Figure A.l on page 213.

A.2. Graphical Analysis

One of the most powerful tools available for investigating the dynamics of functions of the real numbers is graphical analysis. The following program was used to produce Figure A.2a on page 213. We use graphical analysis to analyze the itinerary of .1 under iteration of hex) = 3.5x(1 - x) . The first 20 iterates are shown. Lines enclosed by (* ... *) are comments.

Clear[h,x] ; h[x_] : = 3.5x (i-x)

StartingValue = .1; FirstIt -= 0; LastIt = 20;

Page 5: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

A.2. Graphical Analysis 207

xmin 0; xmax 1;

(* Finding the Points *)

i 0; y N[StartingValue] ;

While[i < FirstIt, y = h[y]; i i + 1];

DataTable = {{y,y},{y,h[y]}};

While[i < LastIt, y = h[y]; AppendTo[DataTable,{y,y}] ; AppendTo[DataTable,{y,h[y]}] ; i=i+ll;

AppendTo[DataTable,{h[y] ,h[y]}];

(* Drawing the Cobweb *)

Cobweb = ListPlot[DataTable,PlotJoined -> True, PlotRange -> {{xmin,xmax},{xmin,xmax}}, AspectRatio -> 1 ,PlotStyle->GrayLevel [.3] , DisplayFunction -> Identity];

(* Drawing the graphs of h(x) and y=x *)

Graph = Plot [{h[x] ,x},{x,xmin,xmax}, PlotRange -> {xmin,xmax},AspectRatio -> 1, DisplayFunction -> Identity];

(* Displaying the result *)

Show[Cobweb,Graph,DisplayFunction -> $DisplayFunction]

To determine the long-term itinerary of .1 under iteration of h, we change the values of FirstIt and LastIt in this program to 100 and 120, re­spectively. Then the first 100 iterates are calculated, and 20 iterates of the cobweb are drawn beginning with h lO0 (.1). The result is shown in Figure A.2b on page 213; apparently .1 is attracted to a period four orbit.

Page 6: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

208 Appendix. Mathematica Algorithms

A.3. Bifurcation Diagrams

The following code was used to generate Figure 12.8; it took approxi­mately five minutes to do so. A similar block of code took more than three hours to generate Figure 12.10,1 The difference in times is a result of the number of parameter values at which the orbit approached a fixed point. (If y = h(y), the value of i is set to LastIt and the While [ ... ] loop ends.) In generating Figure 12.10, it may have been more efficient to include a test that would determine whether or not a point was already included in the data table before appending it. In general, it is wise to experiment with a small number of parameter values before trying to make a detailed figure. To increase speed, we compiled the function f in the second line. Further gains in processing time could be attained by compiling all or part of the While [ ... ] loops.

(* We define f and h, f is compiled for increased speed *)

f = Compile[{x,c}, (2 x-3 - 1)/(3x-2 + c)]; h[x_] f[x,p];

(* Firstlt is the first iteration graphed, Lastlt is the last, seed is the starting value, steps is the number of parameter values used. *)

FirstIt = 500; Lastlt = 600; seed = 0.0; steps = 500

pmin pmax pstep

(* pmin and pmax define the bounds of the parameters, pstep is the stepsize. *)

-2; - .001; N[(pmax - pmin)/steps] ;

(* xmin and xmax define the bounds of the values to be plotted. *)

xmin -2;

IThe author has recently developed faster code for bifurcation diagrams. You can find a copy of the code to download by searching for "Holmgren" at www.mathsource.com.

Page 7: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

A.4. Julia Sets 209

xmax 2;

(* We ensure that our parameter is a numerical value and create DataTable to store the output *)

p = N[pmin]; DataTable = {};

(* Now we determine which points are in the orbit *)

While[p <= pmax, y = Nest [h,N[seed] ,Firstlt]; i = FirstIt; While[i <= Lastlt,

AppendTo[DataTable,{p,y}] ; If[y == h[y], i = Lastlt, y h[y]]; i = i+1];

p = p + pstep]

(* Finally we use ListPlot to display the points stored in DataTable *)

ListPlot[DataTable, Plot Range -> {{pmin,pmax},{xmin,xmax}}, AxesOrigin->{pmin,xmin}, AspectRatio -> 1, PlotStyle->{PointSize[.0025]}]

The commands PlotRange, AxesOrigin, and AspectRatio customize the output of ListPlot [ ... ] in the obvious way. The optional command PlotStyle->{PointSize [.0025]}] improves the quality of the graphics by specifying that the size of the points plotted should be 460 = .0025 of the image width. The default value is 1~5 = .008 of the image width, which is a bit too coarse for many plots. To get a good image, it is often worth playing around with the point size.

A.4. Julia Sets

The following code was used to draw the Julia sets of qc(z) = Z2 + c, which are shown in Figure 15.1. Computational time ranged from 30 to 90 minutes. However, by using a coarser gnd, we can create informative figures in a small fraction of that time. It is also worth noting that one has to be careful in choosing the number of iterates to be computed before deciding

Page 8: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

210 Appendix. Mathematica Algorithms

whether or not the point is in , or at least very close to, the Julia set. For example, the Julia set for q(z) = z2 + i, which is shown in Figure 15.1, is very sparse. If we start iterating q at a point in the Julia set, then rounding will soon cause us to leave the Julia set. Thus, within 20 or so iterations, the computed iterate will be well on its way to infinity, even though the actual iterate is still in the Julia set. Consequently, 12 iterations were used to create the image of Ki shown in Figure 15.1.

In the following program, the first block of code defines the compiled function Julia[x,y, p,m] . Julia determines whether or not the point x + Iy leaves the circle of radius ipi + 1 before m iterations of q(z) = z2 + P have been completed. If so, Julia returns the value 1. If not, Julia returns the value O. The second block of code plots those coordinates (x, y) for which Julia returns the value O. In this example, we are searching for the Julia set of q(z) = Z2 - 1.

The command Densi tyPlot [ ... ] in the second block of code applies Julia [ ... ] to all the points on a 400 by 400 grid in a box with corners at -2-2i, 2-2i, 2+2i, and -2+2i to see whether or not they leave the circle with radius 2 within 100 iterations of q(z). If they do leave, then Julia returns the value 1 and the point is left white. Points that don't leave, and hence are in or close to the Julia set, are shown in black. This example took approximately 84 minutes to run. Note that the time of computation increases with the square of the grid size. Consequently, we would expect this same program to run in about 5 minutes if we used a grid size of 100. Decreasing the number of iterations checked also decreases the time needed. And, of course, as we said in the preamble to the Appendix, readers interested in doing many computations should consider using MathLink to decrease the necessary run time by at least another order of magnitude.

Julia Compile[{x,y,{p, _Complex},{m, _Integer}}, Module[{z = x+I y, n = 0, w = p, k = O},

bound = Abs[w] + 1;

];

While[n <= m && k == 0,

k]

If[Abs[z] > bound, k 1]; z = z-2 + w; n++] ;

DensityPlot[Julia[x,y,-1,100] , {x,-2,2},{y,-2,2}, PlotPoints -> 400, Mesh -> False]

Page 9: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

A.5. The Mandelbrot Set 211

There are other methods for computing images of Julia sets. One utilizes the fact that an equivalent definition of a Julia set for the parameter c is the closure of the set of repelling periodic points of qc (z) = z2 + c. Another uses the fact that for any positive E, we know the circle with radius 1 + fel +E is not in the filled Julia set Kc. Successive inverse images of this circle are computed. As these inverse images must converge to Kc as the number of iterations goes to infinity, we can often get a good picture quickly. Both of these methods are discussed in the book by Peitgen, Jurgens, and Saupe, which is listed in the references.

A.5. The Mandelbrot Set

The following Mathematica program was used to create Figure 15.2. The fundamental design of the program is much the same as that of the program for Julia sets. This program took about 42 minutes to run. As with the Julia set program, the necessary run time increases with the square of the grid size. Run time can also be decreased by decreasing the number of iterations used.

Clear[x,y,m,c,z,n,k,r] ;

Mandel = Compile[{x,y,{m, _Integer}},

J;

Module[{c = x+I y, z = x+I y, n = 0, k 0, r=Sqrt[x-2 + y-2]},

If[Abs[c + 1] <= .25,n=m+1];

k]

If[r == 0, n = m+1, If[r <= Abs[(.5/r) c - ( . 25/r-2) c-2] ,n=m+1]];

While[n <= m && k == 0, If[Abs[z] > 2, k=l, z z-2 + c ]; n++];

DensityPlot [Mandel [x,y,100] , {x,-2,2},{y,-2,2}, PlotPoints -> 400, Mesh -> False]

An alternative method for computing the Mandelbrot set is discussed in the book by Peitgen, Jurgens, and Saupe, which is listed in the references. It uses an inverse iteration scheme similar in concept to the one described earlier for creating Julia sets.

Page 10: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

212 Appendix. Mathematica Algorithms

A.6. Stable Sets of Newton's Method

The following program was used to create Figure 14.8. Run time was ap­proximately 4.5 hours. Obviously, this code needs to be optimized further. We refer the reader to the text by Shaw and Tigg for suggestions as to how this might be done. Of course, it was necessary to find the roots of the function before we could write the program, since the three If statements test how close the iterate is to each of the roots.

Clear[z,m,w,n,k] ; Newton =

Compile [{{z, _Complex},{m, _Integer}}, Module[{w = z, n = 0, k = 4},

While[n <= m && k == 4 && w != 0.0 + 0.0 I,

(* In the next three lines, we determine how close the current iterate is to one of the fixed points . If we are within the desired tolerance, then this function returns the assigned value of k . *)

If[Abs[w - 1.0 + O. I]<= . 25,k = 1]; If[Abs[w-(-.5+.866I)]<=.25,k 2]; If[Abs[w-(-.5-.866I)]<=.25,k = 3];

(* The code for Newton's method is added in the next line. *)

k]

w = (2 w~3 + 1)/(3 w~2); n++] ;

DensityPlot[Newton[ x + I y,50], {x,-2,2},{y,-2,2}, PlotPoints -> 400, Mesh -> False]

The boundlries of the stable sets of the fixed points of Newton's func­tion for a cub,c polynomial are the closure of the set of repelling perioriic points. By exploiting this fact , one can write algorithms that compute these boundaries efficiently. We refer interested programmers to the book by Peitgen, Jurgens , and Saupe for suggestions as to how this might be done.

Page 11: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

a)

A.6. Stable Sets of Newton's Method 213

FIGURE A.I. The graph of T2 and y = x as generated by the program described on page 206.

FIGURE A.2 . Graphical analysis of the itinerary of .1 un­der iteration of h(x) = 3.5x(1 - x).

Page 12: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

References

The items in this bibliography are loosely arranged by topic. In general, only works with which I have had substantial experience are included; this list is by no means exhaustive. My personal reactions to the texts are also included. In addition to sources of information on dynamical systems, I have included references on other mathematical topics mentioned in the text, general interest titles, and computing resources.

Dynamical Systems. New books and articles on dynamical systems appear regularly. Good books on the topic include the following:

DEVANEY, R. An Introduction to Chaotic Dynamical Systems, 2nd edition, Addison-Wesley, 1989

My text arose out of the desire to provide my students the mathematical background necessary to understand this text by Devaney. His book is good but demands sophistication on the part of the reader. In general, the notation and terminology of my book are consistent with his and the reader should find his book to be a reasonable continuation of the ideas contained in mine.

DEVANEY, R. A First Course in Chaotic Dynamical Systems: Throry and ~'xperiment, Addison-Wesley, 1992

This text by Devaney covers roughly the same ground as mine but is written from a different point of view. Individuals interested in writ-

Page 13: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

216 References

ing programs to do computations in dynamics may wish to consult Ap­pendix B of Devaney's book, which contains TrueBASIC programs that will do all of the computations necessary to complete the exercises in my text as well as his.

HIRSCH, M . W. AND SMALE, S . Differential Equations, Dynamical Sys­tems, and Linear Algebra, Academic Press, 1974

Continuous dynamical systems arise out of the qualitative study of dif­ferential equations. This text is an excellent treatment of the qualitative analysis of differential equations and introduces concepts in continuous dynamical systems that are analogous to the concepts we have seen in my book. Hirsch and Smale's book does require sophistication on the part of the reader , but it should be accessible to an advanced undergraduate and is worth the effort . The intertwining of dynamical systems theory and linear algebra with the theory of differential equations motivates their study. Recommended reading for any student interested in pursuing the study of dynamical systems.

HUBBARD, J . AND WEST , B. Differential Equations: A Dynamical Sys­tems Approach, Springer-Verlag, 1991

This is a three-volume text that explores the qualitative behavior of differential equations. The fifth chapter (in volume 1) does a good job of introducing numerical methods of solving differential equations as discrete dynamical systems. Limitations of computer implementations of numerical approximations to solutions of differential equations are discussed in Chapter 3. There is a proof of Theorem 12.15 from my text in Section 5.3.

MILNOR, J. Dynamics in one complex variable: Introductory Lectures, Stony Brook Institute for Mathematical Sciences Preprint #1990/5

I haven't seen these notes, but I understand that they are a fairly com­plete set of notes suitable for a first-year graduate-level course on com­plex dynamics.

PEITGEN, H. AND SAUPE, D. , EDS . The Science of Fractal Images, Springer-Verlag, 1988

This book should be informative and interesting to anyone who finds my text accessible. It contains numerous algorithms for computing fractal images. In particular, there are several different algorithms for comput­ing Julia sets and the Mandelbrot set.

Page 14: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

References 217

PEITGEN, H., JURGENS, H., AND SAUPE, D. Chaos and Fractals: New Frontiers in Science, Springer-Verlag, 1992

An encyclopedic, though often heuristic, account of many current topics in chaotic dynamics and fractals. I haven't had a lot of time to look at this book, but I have enjoyed those portions that I have read. The last five chapters extend the material covered in my text. In partic­ular, the chapters on Julia sets and the Mandelbrot set present many of the recently discovered properties of these sets. They also include good, efficient programs in BASIC for computing images of these sets. Recommended reading for individuals interested in learning more about fractals, Julia sets, and the Mandelbrot set. The graphics are beautiful, and it is a fun book to peruse.

ROBINSON, C. Dynamical Systems: Stability, Symbolic Dynamics, and Chaos, CRC Press, 1995

An extensive account of many current topics in chaotic dynamics and fractals written at the graduate level. I recently purchased my copy of this text, and I have found it to be very useful. In it, many well­known facts and their proofs are collected together for the first time. In addition the exhaustive references provide a point of departure for anyone wishing to delve more deeply into the subject.

The College Mathematics Journal, Vol. 22, No.1, January 1991

This volume of CMJ was dedicated to discrete dynamical systems and contains several good articles. Software and computer exercises using ideas from dynamics are also discussed.

General Interest Books on Dynamics.

Gleick, J . Chaos: Making a New Science, Viking, 1987

This book has had a wide readership and students in my courses on dynamics have found it to be good companion reading for a course in dynamics. I prefer the book by Stewart, which is listed next , but there is room for debate. The review of Gleick's book by John Franks and the subsequent responses in The Mathematical Intelligencer are worth read­ing. They help put Gleick's book in perspective and provoke thought about the nature of mathematics. The review and a response are in Vol. 11, No.1 (winter 1989), pages 65- 71. Discussion continues in Vol. 11, No.3 (summer 1989), pages 3- 13.

Page 15: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

218 References

STEWART, 1. Does God Play Dice?: The Mathematics of Chaos, Blackwell, 1989

This is a very good and readable discussion of the implications of modern dynamical systems and chaos theory on the development of science. It is highly recommended as companion reading for a course in dynamical systems or differential equations.

Topics in Mathematics.

BELDING, D., AND MITCHELL, K. Foundations of Analysis, Prentice-Hall, 1991

RUDIN , W. Principles of Mathematical Analysis, 3rd edition, McGraw-Hill, 1976

The text by Rudin is an excellent comprehensive introduction to math­ematical analysis in IRn and demands a relatively high degree of math­ematical sophistication on the part of the reader. It is definitely on my top ten list of favorite mathematics textbooks. The text by Belding and Mitchell is not as comprehensive, but it is a good, reader-friendly intro­duction to real analysis. Student consensus is that it is a great book for the first-time student of analysis.

BAK, J., AND NEWMAN , D. J. Complex Analysis, Springer-Verlag, 1982

CHURCHILL, R. V., AND BROWN, J. W. Complex Variables and Applica­tions, 5th edition, McGraw-Hill, 1990

The complex analysis texts by Bak and Newman and by Churchill and Brown are both good introductions to complex analysis and are acces­sible to advanced undergraduates.

WILLARD, S. General Topology, Addison-Wesley, 1970

Willard 's textbook on topology is intended for beginning graduate stu­dents . Most of the topological ideas covered in my book are adequately covered in the analysis books already mentioned, but individuals inter­ested in all of the details will find Willard's text useful. Personally, I think general topology is fascinating.

OSTROWSKII, A. M. Solutions of Equations and Systems of Equations, 2nd edition, Academic Press. 1966

Ostrowskii 's text is an extensive treatment of numerical methods for solving equations. It is included here since it contains a proof of my Theorem 12.15.

Page 16: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

References 219

Computer Programs and Algorithms. Most of the exercises in this text can be done using Mathematica. Mathematica is a computer algebra system developed by Wolfram Research of Champaign, Illinois. The pro­grams and commands necessary to use Mathematica successfully with this textbook are listed in the Appendix. Helpful books for users of Mathemat­ica include the following:

WOLFRAM, S. Mathematica: A System for Doing Mathematics by Com­puter, 2nd edition, Addison-Wesley, 1991

This is the text I turn to first when I have questions about using Math­ematica.

SHAW, W . T., AND TrGG, J. Applied Mathematica: Getting Started, Getting It Done, Addison-Wesley, 1994

This text has helped me dramatically improve my understanding and use of Mathematica. Individuals interested in creating images of the Mandelbrot set will want to read Chapter 19, which discusses how one can create good images of the Mandelbrot set in a relatively short period of time. The ideas used also apply to creating images of Julia sets and bifurcation diagrams.

If one doesn't want to use Mathematica, there are a multitude of other options one can pursue. Probably the easiest choice for those with some computer experience is to write their own programs. None of the programs for doing the dynamics experiments mentioned in this text need be more than 20 or 30 lines long. Many will have less than 10 lines. To write the programs, one just needs to be able to input initial data to a program, construct loops to do the iteration, and output graphics information to the screen. Several of the books listed in the section on dynamics include computer programs. TrueBASIC programs that can easily be converted into other languages are included in Appendix B of the text by Devaney. Numerous programs are included in the book edited by Peitgen and Saupe. Efficient programs in BASIC for computing Mandelbrot and Julia sets are found in the book by Peitgen, Jurgens, and Saupe.

For those who want a canned package, the alternatives are almost end­less. There are probably hundreds of public domain packages that can do the job. Check local bulletin boards or use your favorite web browser and search the Internet.

Finally, I hclude the following reference for a workbook and software in­tended to serve as a supplement to Devaney's text by the same name (listed earlier). While I have never seen it , I believe it contains programs that can complete all the computations necessary for completing the exercises in this text. It requires a Macintosh computer running System 6.0.5 or higher. To

Page 17: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

220 References

get adequate speed, one should have a Mac II and a math coprocessor. For the exact system requirements, please contact Addison-Wesley.

GEORGES, J., JOHNSON, D., AND DEVANEY, R. L. A First Course in Chaotic Dynamical Systems: Laboratory! Addison-Wesley, 1992

Page 18: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

Index

accumulation point 24, 111 equivalent conditions for 24, 111

argument of a complex number 169 attracting periodic point 54, 176

super attracting 133, 148 weakly attracting 54, 190

bifurcation 59, 60 diagram 62, 66, 96 period-doubling 66, 96 pitchfork 62 saddle-node 61 transcritical 63

bifurcation diagram 62, 66, 96 bounded set 73

in the complex plane 193

c 1 functions 51 Cantor, Georg 84 Cantor dust 201 Cantor set 73, 84

in complex plane 195, 201 Cantor Middle Thirds Set 73, 85 Cayley, Arthur 184 chaotic 80,117,184

conditions for 81,117 chain rule 55, 173, 188

circle, doubling map on 124, 136, 150, 178

closed set 25, III equivalent conditions for 26, 112

codomain 9 commutative diagram 87 compact set 73 complement 25 complex functions 170 complex numbers 167

argument of 169 arithmetic in 167 exponential form 170 modulus of 168 polar form 170 on Riemann sphere 178 square roots of 170

complex plane 168 extended 181

continuous function 12, 15, 23, III of complex numbers 170, 181 visualizing 13

convergent sequence 23, 110, 181 converges to infinity 23, 180 critical point 96, 195

role in dynamics 96, 195

Page 19: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

222 Index

dense subset 27, III equivalent conditions for 27, 112

derivative of a function 47, 171 Devaney, R. 80 differentiable 47, 171 distance 13, 110

in symbol space 109 on the Riemann sphere 184

domain 9 doubling map 124, 136, 150, 178

€-neighborhood 21 Euler's formula 170 Euler's method 154 eventually fixed point 34 eventually periodic point 34 exponential form of a complex number

170 exponential models 4 extended complex plane 181

family of functions 59 parametrized 59

Fatou, Pierre 95, 195 Feigenbaum, Mitchell 107 Feigenbaum's constant 100, 107 filled Julia set 194, 211 fixed point 31

eventually fixed 34 finding fixed points 31, 33, 48, 50 hyperbolic 52

forward asymptotic 35 fractal 84 function 9

C 1 51 codomain 9 continuous 12, 170, 181 differentiable 47, 171 domain 9 family of 59 inverse of 16 invertible 16 linear 19 one- to-one 10 onto 11 parametrized family of 59 range 9

graphical analysis 36 algorithms for 206

grows without bound 23

homeomorphism 16, 89 linear functions as 19

hyperbolic attracting set 77 hyperbolic fixed point 52 hyperbolic periodic point 53, 176 hyperbolic repelling set 77

image 10 Intermediate Value Theorem 16 inverse image 10

of an open set is open 112 invertible function 16

conditions for 16

Julia, Gaston 195 Julia set 194, 211

algorithms for 199, 209, 211

least upper bound 121 limit 172 limit point 24 linear fractional transformation 182 logistic function 4, 7, 63

Mandelbrot, Benoit 197 Mandelbrot set 167, 197

algorithms for 199, 211 map or mapping 9 Mean Value Theorem 47 metric 110

on Riemann sphere 184 Mobius transformation 182 modulus of a complex number 168 Morse sequence 115

neighborhood 21, 28, 110 in complex plane 168 in extended complex plane 180

neutral fixed points 52, 53, 54, 56 Nested Interval Theorem 121 Newton, Isaac 127 Newton 's function 129, 182 Newton's method 127

algorithms for 212 chaotic behavior in 145, 192 in the complex plane 182 for cubic polynomials 138, 186, 191 for polynomials 131, 182 for quadratic polynomials 133, 185

Newton-Raphson method 127

Page 20: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

nonhyperbolic periodic point 53 importance of 60

onto 11 equivalent conditions for 11

one-to-one 10 equivalent conditions for 10, 16

open set 21, 110, 181 equivalent conditions for 22, 26,

111, 112 on Riemann sphere 184

orbit 33 bounded 193

parameter 59 parametrized family of functions 59 perfect set 73 period 33

prime period 33 period-doubling bifurcation 66, 96

cascade of 96 periodic cycle 33 periodic orbit 33 periodic point 33

attracting 54, 176 eventually 34 hyperbolic 53, 176 repelling 54, 176 weakly attracting 54, 190 weakly repelling 54, 190

phase portraits 5 pitchfork bifurcation 62 polar form of a complex number 170 preimage 10

of an open set is open 112 prime period 33

quadratic map 93, 107, 159 of the complex plane 178, 193

range of a function 9

Index 223

Raphson, Joseph 127 repelling periodic points 54, 176

weakly 54, 190 Riemann sphere 178

saddle-node 61 Sarkovskii, A. N. 43 Sarkovskii's ordering 44 Sarkovskii's Theorem 41, 44

on an interval 46 sensitive dependence on initial

conditions 79, 117 not preserved by topological

conjugacy 91 sequence space 109

distance in 109 shift map 114 Smale, Stephen 84 stable set 35

finding stable sets 50, 53, 175 of a set 78

stereographic projection 179 super attracting 133, 148 symbol space 109

distance in 109

tent map 86, 92 topological conjugacy 87, 89

of metric spaces 119 topologically transitive 79, 115

conditions for 115 topology 21 totally disconnected 73, 195 transcritical bifurcation 63 Triangle Inequality 13, 18, 110

weakly attracting periodic point 54, 190 weakly repelling periodic point 54, 190 well-mixed 79

Page 21: Appendix Mathematica Algorithms - Springer978-1-4419-8732-7/1.pdf · Appendix Mathematica Algorithms Most of the computations for this text were done by Mathematica on a NeXT computer

Universitext (continued)

Meyer: Essential Mathematics for Applied Fields Mines/Richman/Ruitenburg: A Course in Constructive Algebra Moise: Introductory Problems Course in Analysis and Topology Morris: Introduction to Game Theory Poizat: A Course In Model Theory: An Introduction to Contemporary Mathematical Logic

Polster: A Geometrical Picture Book PorterlWoods: Extensions and Absolutes of Hausdorff Spaces RadjavilRosenthal: Simultaneous Triangularization Ramsay/Richtmyer: Introduction to Hyperbolic Geometry Reisel: Elementary Theory of Metric Spaces Rickart: Natural Function Algebras Rotman: Galois Theory RubellColliander: Entire and Meromorphic Functions Sagan: Space-Filling Curves Samelson: Notes on Lie Algebras SchilT: Normal Families Shapiro: Composition Operators and Classical Function Theory Simonnet: Measures and Probability Smith: Power Series From a Computational Point ofYiew Smoryski: Self-Reference and Modal Logic Stillwell: Geometry of Surfaces Stroock: An Introduction to the Theory of Large Deviations Sunder: An Invitation to von Neumann Algebras Tondeur: Foliations on Riemannian Manifolds Wong: Weyl Transforms Zhang: Matrix Theory: Basic Results and Techniques Zong: Sphere Packings Zong: Strange Phenomena in Convex and Discrete Geometry