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: Available integrators.
  • Library of Predefined Dynamical Systems that have been used extensively in scientific research.
  • Unified & dedicated interface for numerical data: Dataset.


  • An interface to estimate Entropies & Probabilities from trajectories or state space sets.
  • Dozens of Probabilities Estimators for doing so, including standard binning, counting, permutations, nearest neighbor based, time-scale based, among others.
  • Fast and cheap (memory-wise) method for computing histograms of large datasets: binhist.

Delay Coordinates Embedding

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

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

  1. Maximum Lyapunov exponent: lyapunov.
  2. Lyapunov spectrum: lyapunovspectrum.
  3. Finite-time, finite-size Lyapunov exponent (a.k.a. nonlinear Lyapunov exponent): local_growth_rates.
  4. Numerically determining the maximum Lyapunov exponent of a (e.g. experimentally) measured timeseries or dataset: lyapunov_from_data.

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.

Fractal Dimension

  1. Dozens of methods to calculate a fractal dimension
  2. Entropy-based
  3. Correlation-sum-based
  4. 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. DyCA coordinates: dyca.
  3. Nearest Neighbor Prediction.
  4. Timeseries Surrogates.

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: mean_return_times, exit_entry_times.

Attractors, Basins, Tipping Points

Recurrence Analysis

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

Other NLD-relevant packages

Besides DynamicalSystems.jl, the Julia programming language has a thriving ecosystem with plenty of functionality that is relevant for nonlinear dynamics. We list some useful references below: