Calculate and graphically display an iterated endomorphism of the plane

Authored and Contributed by
Ronald Joe Record
Copyright 1993, 1994 Ronald Joe Record
The mathrec source code is freely redistributable. The author maintains binary distributions for Caldera OpenLinux 3.1, OpenServer, UnixWare 7 and Open UNIX 8. These distributions and the source code are available via:

Binary Distributions
OpenLinux/Open UNIX ftp://ftp2.sco.com/pub/soss/RPMS/mathrec-1.1c-1col.i586.rpm (no longer available)
UnixWare 7 ftp://ftp2.sco.com/pub/skunkware/uw7/Packages/mathrec-1.1b.pkg
OpenServer ftp://ftp2.sco.com/pub/skunkware/osr5/vols/mathrec-1.1c-VOLS.tar

Source Code Distributions
Source RPM ftp://ftp2.sco.com/pub/soss/SRPMS/mathrec-1.1c-1col.src.rpm (no longer available)
Gzip'd tar archive ftp://ftp2.sco.com/pub/skunkware/src/x11/misc/mathrec-1.1c.tar.gz

The basic idea is to iterate an endomorphism of the plane (R x R). Each point (x,y) is mapped to (f(x,y),g(x,y)). The new point is then mapped to (f(f(x,y),g(x,y)),g(f(x,y),g(x,y))) and so on. Each point is then colored according to how many iterates it took to get within some "delta" of a previous iterate (e.g. a periodic orbit is detected). Lyapunov exponents can be calculated and displayed for a region of parameter space. Phase portraits can be constructed and histographic data displayed. Finally, critical curves and their iterates may be displayed (curves for which the determinant of the Jacobian is zero).
The Winter 1992 seminar at UCSC led by Dr. Ralph Abraham was the inspiration for the study of iterated endomorphisms of the plane. The 3-D transformation routines were ported to X from CGI routines developed by Hiram Clawson.

Techniques for calculating the critical arcs and absorbing regions were drawn from Laura Gardini of the Istituto di Scienze economiche, Universita' di Urbino. Studies of various maps of the plane were used including papers by Jon von Neumann, Graciela Chichilnisky, John Guckenheimer, G. Oster, A. Ipaktchi, Wulf Gaertner, Jochen Jungeilges, Ralph Abraham, B. P. Wood, A. J. Lichtenberg, Z. You, E.J. Kostelich, J. A. Yorke, R. Brown, L. Chua, K. Judd, A. I. Mees, K. Aihara, and M. Toyoda.

Some "interesting" runs of endo are included as simple shell scripts in the "params" subdirectory (these get installed in /usr/local/mathrec/endo).

To add a map to the array of selectable endomorphisms, follow the following steps :
  1. Edit endo.h and add the pair, double, PFP, PFD, and Mapnames declarations. Follow the example set by the "standard" map.
  2. Edit maps.c and add the map and derivative function definitions. Again, you can follow the example set by standard() and dstandard().
  3. Edit params.h adding the numerical values to use in the amins, aranges, bmins, branges, pmins, pmaxs, and defparms arrays. In each case, when adding the nth map, you will be adding the nth value in the array (which may itself be an array).
  4. Edit defines.h, incrementing NUMMAPS and increasing NUMDEFS by 2.
  5. Edit info.c, adding a string representation of the function to Mapdefs[] and an entry in the numparams array indicating how many parameters the map has.
  6. make clean; make tags; make
This program was designed to assist in the exploration and research of iterated non-invertable maps of the plane. It has proved useful in constructing a phenomenology of the dynamical properties of such maps.
I have used it for years without harm.
Work Planned
Improve the Lyapunov exponent algorithm so that both exponents are calculated explicitly.
manual page.
Execute any or all of the shell scripts provided in /usr/local/mathrec/endo.