The module DynamicalSystems re-exports all following functionality, grouped into different packages.


  • 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.


Is a package for performing delay coordinate embeddings and finding optimal parameters for doing so.

  • Unified & dedicated interface for numerical data: Dataset.
  • Flexible, super-efficient and abstracted Delay Coordinates Embedding interface.
    • Supports multiple dimensions and multiple timescales.


Is a package that has many algorithms for chaotic dynamical systems. All algorithms are independent of each other but they are also not expansive enough to be a standalone package.

Orbit Diagrams & PSOS

  1. Orbit diagrams (aka bifurcation diagrams) of maps: orbitdiagram.
  2. Poincaré surfaces of section for continuous systems: poincaresos.
  3. Automated production of orbit diagrams for continuous systems: produce_orbitdiagram.

Lyapunov Exponents

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

  1. Maximum Lyapunov exponent for both discrete and continuous systems: lyapunov.
  2. Lyapunov spectrum for both discrete and continuous systems: lyapunovs.

Detecting & Categorizing Chaos

  1. The Generalized Alignment Index: $\text{GALI}_k$ : gali.
    • Implemented for both discrete and continuous systems.
  2. A test to categorize strong chaos, partially predictable chaos and regular behavior: predictability.
    • Implemented for both discrete and continuous systems.
  3. The 0-1 test for chaos: testchaos01
  4. The expansion entropy: expansionentropy.

Entropies and Dimensions

  1. Generalized (Renyi) entropy: genentropy.
  2. Permutation entropy: permentropy.
  3. Fast and cheap (memory-wise) method for computing entropies of large datasets.
  4. Generalized dimensions (e.g. capacity dimension, information dimension, etc.): generalized_dim.
  5. 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

  1. Broomhead-King coordinates: broomhead_king.
  2. Numerically determining the maximum Lyapunov exponent of a (e.g. experimentally) measured timeseries: numericallyapunov.

Periodicity & Ergodicity

  1. 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.
  2. Estimating the period of a timeseries: estimate_period.
  3. Return and transit time statistics for a subset of the state space: transit_time_statistics.


RecurrenceAnalysis 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