Skip to main content

Crate koopman_dmd

Crate koopman_dmd 

Source
Expand description

§koopman-dmd

Dynamic Mode Decomposition with Koopman operator theory extensions.

This library provides data-driven analysis of dynamical systems using DMD and related spectral methods:

  • Core DMD (dmd()): Standard DMD with truncated SVD, optional centering
  • DMDc (dmdc()): DMD with control, x_{t+1} = A·x_t + B·u_t, from explicit snapshot pairs (Proctor, Brunton & Kutz 2016); known-B variant included
  • Extended DMD (lift_data, LiftingConfig): Polynomial, trigonometric, and delay-coordinate lifting for nonlinear systems
  • Hankel-DMD (hankel_dmd): Time-delay embedding via Krylov subspace
  • GLA (gla()): Generalized Laplace Analysis for direct eigenfunction computation
  • Harmonic Time Averages (harmonic_time_average): Phase space analysis via HTA
  • Mesochronic Plots (mesochronic_compute): Parallelized grid HTA visualization
  • Built-in maps (StandardMap, HenonMap, etc.): Chirikov, Froeschlé, Hénon, logistic

§Quick Start

use koopman_dmd::{dmd, DmdConfig, predict_modes};

// Create a simple oscillating signal
let n = 100;
let mut data = faer::Mat::<f64>::zeros(2, n);
for j in 0..n {
    let t = j as f64 * 0.1;
    data[(0, j)] = t.sin();
    data[(1, j)] = t.cos();
}

// Compute DMD
let config = DmdConfig::default();
let result = dmd(&data, &config).unwrap();

// Predict 10 steps ahead
let pred = predict_modes(&result, 10, None).unwrap();

§References

  • Schmid (2010), J. Fluid Mech., 656, 5-28
  • Kutz et al. (2016), Dynamic Mode Decomposition, SIAM
  • Mezic (2020), arXiv:2009.05883
  • Levnajic & Mezic (2014), arXiv:0808.2182v2

Re-exports§

pub use analysis::dmd_convergence;
pub use analysis::dmd_dominant_modes;
pub use analysis::dmd_error;
pub use analysis::dmd_pseudospectrum;
pub use analysis::dmd_reconstruct;
pub use analysis::dmd_residual;
pub use analysis::dmd_spectrum;
pub use analysis::dmd_stability;
pub use analysis::spectrum_from_eigenvalues;
pub use analysis::stability_from_eigenvalues;
pub use dmd::dmd;
pub use dmdc::dmdc;
pub use dmdc::DmdcConfig;
pub use dmdc::DmdcResult;
pub use gla::gla;
pub use gla::gla_predict;
pub use gla::gla_reconstruct;
pub use gla::GlaConfig;
pub use gla::GlaResult;
pub use hankel::build_hankel_matrix;
pub use hankel::hankel_dmd;
pub use hankel::hankel_predict;
pub use hankel::hankel_reconstruct;
pub use hankel::HankelConfig;
pub use hankel::HankelDmdResult;
pub use harmonic::classify_phase_space;
pub use harmonic::harmonic_time_average;
pub use harmonic::hta_convergence;
pub use harmonic::hta_from_values;
pub use harmonic::DynamicsType;
pub use harmonic::HtaConvergenceResult;
pub use harmonic::HtaResult;
pub use harmonic::Observable;
pub use harmonic::PhaseSpaceClass;
pub use lifting::lift_data;
pub use lifting::LiftingConfig;
pub use lifting::LiftingInfo;
pub use maps::generate_phase_grid;
pub use maps::generate_trajectory;
pub use maps::ClosureMap;
pub use maps::ExtendedStandardMap;
pub use maps::FroeschleMap;
pub use maps::HenonMap;
pub use maps::LogisticMap;
pub use maps::MapFn;
pub use maps::StandardMap;
pub use mesochronic::mesochronic_compute;
pub use mesochronic::mesochronic_scatter;
pub use mesochronic::mesochronic_section;
pub use mesochronic::MhpResult;
pub use mesochronic::MhspResult;
pub use predict::predict_matrix;
pub use predict::predict_modes;
pub use types::ConvergenceResult;
pub use types::DmdConfig;
pub use types::DmdError;
pub use types::DmdResult;
pub use types::DominantCriterion;
pub use types::ErrorMetrics;
pub use types::ModeInfo;
pub use types::PseudospectrumResult;
pub use types::ResidualResult;
pub use types::Stability;
pub use types::StabilityResult;
pub use types::C64;

Modules§

analysis
dmd
dmdc
Dynamic Mode Decomposition with control (DMDc).
gla
hankel
harmonic
lifting
maps
mesochronic
predict
types
utils