# Contents

The *module* `DynamicalSystems`

re-exports all following functionality.

## Core types

- Intuitive, consistent APIs for the definition of general dynamical systems under a unified struct
`DynamicalSystem`

. The following combinations are possible:- Continuous or Discrete systems. Continuous systems use DifferentialEquations.jl for solving the ODE problem.
- In-place or out-of-place (large versus small systems).
- Auto-differentiated or not (for the Jacobian function).

- Automatic "completion" of the dynamics of the system with numerically computed Jacobians, in case they are not provided by the user.
- Robust implementations of all kinds of integrators, that evolve the system, many states of the system, or even deviation vectors. See the Advanced documentation for this.
- Library of Predefined Dynamical Systems that have been used extensively in scientific research.
- Unified & dedicated interface for numerical data:
`Dataset`

.

## Entropies

- An interface to estimate Entropies & Probabilities from trajectories or state space sets.
- Fast and cheap (memory-wise) method for computing histograms of large datasets:
`binhist`

. - Dozens of Probabilities Estimators for doing so, including standard binning, counting, permutations, nearest neighbor based, time-scale based, among others.

## Delay Coordinates Embedding

Performing delay coordinate embeddings and finding optimal parameters for doing so.

- Flexible, super-efficient and abstracted Delay Coordinates Embedding interface.
- Supports multiple dimensions and multiple timescales.

- Methods that estimate optimal embedding parameters: Traditional Optimal Embedding.
- Unified Optimal Embedding approach (advanced algorithms).
- Fast calculation of mutual information:
`mutualinformation`

. - Unified neighborhood interface.

## ChaosTools

ChaosTools.jl is a collection of many algorithms for (chaotic or not) dynamical systems. All algorithms are independent of each other but they are also not expansive enough to be a standalone package.

### Orbit Diagrams & PSOS

- Orbit diagrams (aka bifurcation diagrams) of maps:
`orbitdiagram`

. - Poincaré surfaces of section for continuous systems:
`poincaresos`

. - Automated production of orbit diagrams for continuous systems:
`produce_orbitdiagram`

.

### Lyapunov Exponents

The following treat systems where the equations of motion are known:

- Maximum Lyapunov exponent for both discrete and continuous systems:
`lyapunov`

. - Lyapunov
*spectrum*for both discrete and continuous systems:`lyapunovspectrum`

.

### Detecting & Categorizing Chaos

- The Generalized Alignment Index: $\text{GALI}_k$ :
`gali`

.- Implemented for both discrete and continuous systems.

- A test to categorize strong chaos, partially predictable chaos and regular behavior:
`predictability`

.- Implemented for both discrete and continuous systems.

- The 0-1 test for chaos:
`testchaos01`

- The expansion entropy:
`expansionentropy`

.

### Fractal Dimension

- Dozens of methods to calculate a fractal dimension
- Entropy-based
- Correlation-sum-based
- Kaplan-Yorke dimension:
`kaplanyorke_dim`

.

And, in order to automatically deduce dimensions, we also offer methods for:

- Partitioning a function $y(x)$ vs. $x$ into regions where it is approximated by a straight line, using a flexible algorithm with a lot of control over the outcome. See
`linear_regions`

. - Detection of largest linear region of a function $y(x)$ vs. $x$ and extraction of the slope of this region.

### Nonlinear Timeseries Analysis

- Broomhead-King coordinates:
`broomhead_king`

. - Numerically determining the maximum Lyapunov exponent of a (e.g. experimentally) measured timeseries:
`numericallyapunov`

.

### Periodicity & Ergodicity

- Numerical method to find unstable and stable fixed points of
*any order*$n$ of a discrete map (of any dimensionality):`periodicorbits`

.- Convenience functions for defining and realizing all possible combinations of $\mathbf{\Lambda}_k$ matrices required in the above method.

- Estimating the period of a timeseries:
`estimate_period`

. - Return and transit time statistics for a subset of the state space:
`mean_return_times`

,`exit_entry_times`

.

## Recurrence Analysis

RecurrenceAnalysis.jl offers tools to compute and analyze Recurrence Plots, a field called Recurrence Quantification Analysis.

- Recurrence Plots, with cross-recurrence and joint-recurrence.
- Recurrence Quantification Analysis (RQA):
- Recurrence rate, determinism, average/maximum diagonal length, divergence, laminarity, trend, entropy, trapping time, average/maximum vertical length.
- Fine-tuning of the algorithms that compute the above (e.g. Theiler window and many more)
- Windowed RQA of the above