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;