Numerical computations on Lozi maps

Guaranteed upper and lower bounds for entropy

Click here for data sorted by "a" parameter value.
Click here for data sorted by "b" parameter value.
Click here for data sorted by the quality of the bounds.
Click here for data sorted by last modification time.

Click here for a plot of the entropy when b=1 (area preserving orientation reversing case).

Click here for a plot of the entropy (accurate values only, good to within +-0.01).
Click here for another plot of the entropy (all values, errors may be big).
Click here for a plot of all known upper bounds for the entropy.
Click here for a plot of all known lower bounds for the entropy.
Click here for a plot of the differences between the upper and lower bounds.

calculate_entropy

This is a program that calculates a guaranteed upper bound for the topological entropy of a Lozi map with rational parameter values. The program uses exact integer arithmetic in order to avoid rounding errors, which is why the parameters must be rational numbers. The upper bound algorithm will theoretically always converge to the exact value of the entropy, but this of course takes an infinite amount of time and an infinite amount of memory!

Usage: calculate_entropy [-v] A_Numerator A_Denominator B_Numerator B_Denominator

Here is an example:

calculate_entropy -v 2 1 -1 1

This calculates an upper bound when a = 2 (i.e. 2 / 1) and b = -1 (i.e. -1 / 1). The program keeps going until its estimate stabilizes. This make time a long time, and your machine may well run out of memory first! The -v option causes the program to output estimates as it goes (all estimates are guaranteed upper bounds for the entropy).

The source for calculate_entropy is available as a compressed tar file. In addition to the program, the tar file contains a copy of this page as well as the copyright notices. The program is also available as a text file in which the various routines are simply listed one after the other. You will need to cut it up into the individual files. The gnatchop tool can do this for you (see the section on compiling below). You can also browse the source code.

Compiling

Since calculate_entropy is written in Ada 95, you will need an Ada 95 compiler. I suggest you download the public (free) version of the GNAT compiler (look for "Student information" on the site map, or go directly to the download area); it is available for several platforms (MS Windows, several unixes). Note that some Linux distributions provide prepackaged versions.

You need to link calculate_entropy with the ARPACK sparse matrix code. Since ARPACK is written in Fortran, you will need a Fortran compiler as well (such is life). I suggest you download the GNU Fortran compiler (g77). Then follow the instructions in the ARPACK source.

In what follows I will suppose that the ARPACK library is in the same directory as the calculate_entropy source, and is called libarpack.a. Now compile calculate_entropy with the following command:

gnatmake -s -O2 -gnatn calculate_entropy -largs -s libarpack.a

You may well have problems during the linking phase due to missing Fortran libraries. I'm afraid this depends a lot on your installation. On my machine I have to do

gnatmake -s -O2 -gnatn calculate_entropy -largs -s libarpack.a -lblas -lg2c -L/usr/lib/gcc-lib/i386-linux/2.95.3

Ada 95

Ada is a high level standardized (ANSI/ISO/IEC-8652:1995) programming language. Ada 95 is the latest revision of the original standard. Ada is typically used in applications where robustness and correctness are of particular importance. Information about Ada, Ada tools, compilers and the Ada community can be found at www.adapower.com.

Please let me know what you think of this page.

Back to Duncan's home page.