maxLyapunov: Maximum lyapunov exponent

Description Usage Arguments Details Value Author(s) References Examples

Description

Functions for estimating the maximal Lyapunov exponent of a dynamical system from 1-dimensional time series using Takens' vectors.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
  maxLyapunov(time.series, takens = NULL,
    embedding.dim = 2, time.lag = 1, radius,
    theiler.window = 1, min.neighs = 5,
    min.ref.points = 500, min.time.steps = 0,
    max.time.steps = 10, number.boxes = NULL,
    sampling.period = 1, do.plot = TRUE)

  getTime(x)

  getDivergence(x)

  ## S3 method for class 'maxLyapunov'
 plot(x, ...)

  ## S3 method for class 'maxLyapunov'
 estimate(x,
    regression.range = NULL, do.plot = FALSE, ...)

Arguments

takens

A matrix containing the Takens' vectors (one per row) that will be used to estimate the maximal Lyapunov exponent (see buildTakens). If the Takens' vectors are not specified, the user must specify the time series (time.series), the embedding dimension (embedding.dim) and the time lag (time.lag) that shall be used to construct the Takens' vectors.

time.series

The original time series from which the maximal Lyapunov exponent will be estimated

embedding.dim

Integer denoting the dimension in which we shall embed the time series (see buildTakens).

time.lag

Integer denoting the number of time steps that will be use to construct the Takens' vectors (see buildTakens).

radius

Maximum distance in which will look for nearby trajectories.

theiler.window

Integer denoting the Theiler window: Two Takens' vectors must be separated by more than theiler.window time steps in order to be considered neighbours. By using a Theiler window, we exclude temporally correlated vectors from our estimations.

min.neighs

Minimum number of neighbours that a Takens' vector must have to be considered a reference point.

min.ref.points

Number of reference points that the routine will try to use. The routine stops when it finds min.ref.points reference points, saving computation time.

min.time.steps

Integer denoting the number of time steps marking the start of the linear region.

max.time.steps

Integer denoting the number of time steps marking the end of the linear region.

number.boxes

Number of boxes that will be used in the box assisted algorithm (see neighbourSearch).

sampling.period

Sampling period of the time series. When dealing with a discrete system, the sampling.period should be set to 1.

do.plot

Logical value. If TRUE (default value), a plot of S(t) Vs t is shown.

...

Additional parameters.

x

A maxLyapunov object.

regression.range

Vector with 2 components denoting the range where the function will perform linear regression.

Details

It is a well-known fact that close trajectories diverge exponentially fast in a chaotic system. The averaged exponent that determines the divergence rate is called the Lyapunov exponent (usually denoted with lambda). If delta(0) is the distance between two Takens' vectors in the embedding.dim-dimensional space, we expect that the distance after a time t between the two trajectories arising from this two vectors fulfills:

δ (n) is.approximately δ (0) exp(λ *t).

The lyapunov exponent is estimated using the slope obtained by performing a linear regression of S(t)=λ *t is.approximately log(δ (t)/δ (0)) on t. S(t) will be estimated by averaging the divergence of several reference points.

The user should plot S(t) Vs t when looking for the maximal lyapunov exponent and, if for some temporal range S(t) shows a linear behaviour, its slope is an estimate of the maximal Lyapunov exponent per unit of time. The estimate routine allows the user to get always an estimate of the maximal Lyapunov exponent, but the user must check that there is a linear region in the S(t) Vs t. If such a region does not exist, the estimation should be discarded.

Value

A list with three components named time and s.function. time is a vector containing the temporal interval where the system evolves. It ranges from 0 to max.time.steps * sampling.period. s.function is a vector containing the values of the S(t) for each t in the time vector.

The getTime function returns the time in which the divergence of close trajectories was computed

The getDivergence function returns the rate of divergence of close trajectories needed for the maximum Lyapunov exponent estimation

In order to obtain an estimation of the Lyapunov exponent the user can use the estimate function. The estimate function allows the user to obtain the maximal Lyapunov exponent obtained by performing a linear regression of S(t) on t in the region especified with the regression.range.

Author(s)

Constantino A. Garcia

References

Eckmann, Jean-Pierre and Kamphorst, S Oliffson and Ruelle, David and Ciliberto, S and others. Liapunov exponents from time series. Physical Review A, 34-6, 4971–4979, (1986).

Rosenstein, Michael T and Collins, James J and De Luca, Carlo J.A practical method for calculating largest Lyapunov exponents from small data sets. Physica D: Nonlinear Phenomena, 65-1, 117–134, (1993).

Examples

1
2
3
4
5
6
7
8
9
## Not run: 
 # Estimating the  maximal Lyapunov exponent of the Henon attractor
 h=henon(start = c(0.63954883, 0.04772637), do.plot = FALSE)
 estimation = maxLyapunov(time.series = h$x, embedding.dim=2,time.lag=1,
 radius=0.001,theiler.window=4, min.neighs=2, min.ref.points=500 ,
 min.time.steps=5, max.time.steps=10)
 cat("expected: ",0.41," calculated: ",estimate(estimation),"\n")
 
## End(Not run)

nonlinearAnalysis documentation built on May 2, 2019, 6:11 p.m.