# Lyapunov Exponents - Demonstrations

These demonstrations use the 2d Map applet to illustrate the calculation of Lyapunov exponents using the Gramm-Schmidt procedure. You can find more information on how to use the applets on the following pages (return here by hitting "Back"):

Note that in the demonstration applets the cumulative estimate of the Lyapunov exponents is shown each time the iterations are stopped. (These are sometimes called "finite time Lyapunov exponents.) Continuing the iterations will accumulate the estimate of the exponents over a longer time, giving more accurate values.

### Demonstrations

- Demonstration 1 - Henon Map
- Demonstration 2 - Bakers' Map - comparison with known results
- Demonstration 3 - 2D Circle Map

### Method

The procedure to calculate the exponents is simply to iterate two vectors *t*_{1} and *t*_{2} using the linear equations that describe the evolution of small perturbations to the map variables (the tangent space). Then after each time step the magnification of vector *t*_{1} is calculated (and then *t*_{1} is renormalized to unit length) and the vector *t*_{2} is projected normal to *t*_{1}, and the magnification of this normal component is calculated (and then *t*_{2} is renormalized to unit length). The code to do this is simply

//**********************************************************************
/**
* Performs Gramm-Schmidt orthogonalization and calculates increase in norm of
* the vectors
* @param t1 Tangent vector of larger eigenvalue
* @param t2 Tangent vector of smaller eigenvalue
* @param c cumulated log of growth of vector norms
*/
//**********************************************************************
private void renormalize(double[] t1, double[] t2, double[] c) {
double norm1, norm2, dot;
norm1=Math.sqrt(t1[0]*t1[0]+t1[1]*t1[1]); // length of t1
t1[0]=t1[0]/norm1; // renormalize to unit length
t1[1]=t1[1]/norm1;
dot=t2[0]*t1[0]+t2[1]*t1[1]; // component of t2 along t1
t2[0]=t2[0]-dot*t1[0]; // project t2 normal to t1
t2[1]=t2[1]-dot*t1[1];
norm2=Math.sqrt(t2[0]*t2[0]+t2[1]*t2[1]); // length of t2
t2[0]=t2[0]/norm2; // renormalize to unit length
t2[1]=t2[1]/norm2;
c[0]=c[0]+Math.log(norm1); // increase cumulative magnification
c[1]=c[1]+Math.log(norm2);
}
//**********************************************************************

[First Demonstration]
[Outline]

Last modified Sunday, January 9, 2000

Michael Cross

*This page has been visited
times.*