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: Available integrators.
- 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.
- 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.
- 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:
selfmutualinfo
. - Unified neighborhood interface.
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
- Maximum Lyapunov exponent:
lyapunov
. - Lyapunov spectrum:
lyapunovspectrum
. - Finite-time, finite-size Lyapunov exponent (a.k.a. nonlinear Lyapunov exponent):
local_growth_rates
. - Numerically determining the maximum Lyapunov exponent of a (e.g. experimentally) measured timeseries or dataset:
lyapunov_from_data
.
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
. - DyCA coordinates:
dyca
. - Nearest Neighbor Prediction.
- Timeseries Surrogates.
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
.
Attractors, Basins, Tipping Points
- Generic interface for calculating attractors of dynamical systems:
AttractorMapper
.- Via proximity:
AttractorsViaProximity
. - Via recurrences:
AttractorsViaRecurrences
. - Via featurizing and clustering:
AttractorsViaFeaturizing
.
- Via proximity:
- Calculating basins of attraction:
basins_of_attraction
,basins_fractions
. - Final state sensitivity:
uncertainty_exponent
. - Tipping points related functionality:
basins_fractions
,tipping_probabilities
.
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
- Recurrence Networks
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:
- DifferentialEquations.jl - Besides providing solvers for standard ODE systems (infastructure used for
ContinuousDynamicalSystem
), it also has much more features like SDE solvers or uncertainty quantification. - DiffEqSensitivity.jl - Discrete and continuous local sensitivity analysis, i.e., derivatives of the solutions of ODEs, or functions of the solutions, versus parameters, hosting various forward and adjoint methods as well as methods tailored to chaotic systems.
- GlobalSensitivity.jl Global sensitivity analysis assessing the effect of any input variables over a larger domain on the output.
- BifurcationKit.jl - Featureful toolkit for automated bifurcation analysis.
- NetworkDynamics.jl - Package for easily simulating dynamics on networks and transforming network systems into
ODEProblem
(that can be made directly into aContinuousDynamicalSystem
).