#[derive(Clone, Debug)]
pub struct DynamicalSystem {
pub dimension: usize,
pub system_type: SystemType,
}
#[derive(Clone, Debug)]
pub enum SystemType {
Continuous {
ode_coefficients: Vec<Vec<f64>>,
},
Discrete {
map_type: MapType,
},
HamiltonianSystem {
hamiltonian_coeffs: Vec<f64>,
},
}
#[derive(Clone, Debug, PartialEq)]
pub enum MapType {
Logistic {
r: f64,
},
Henon {
a: f64,
b: f64,
},
Standard {
k: f64,
},
Tent {
mu: f64,
},
Bernoulli {
m: usize,
},
}
#[derive(Clone, Debug)]
pub struct Trajectory {
pub points: Vec<Vec<f64>>,
pub times: Vec<f64>,
}
#[derive(Clone, Debug)]
pub struct FixedPoint {
pub location: Vec<f64>,
pub stability: Stability,
pub eigenvalues: Vec<f64>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum Stability {
StableNode,
UnstableNode,
SaddlePoint,
Center,
StableFocus,
UnstableFocus,
Unknown,
}
#[derive(Clone, Debug)]
pub struct LyapunovExponents {
pub exponents: Vec<f64>,
pub system_dimension: usize,
}
#[derive(Clone, Debug)]
pub enum AttractorType {
FixedPoint,
LimitCycle {
period: f64,
},
Torus {
frequencies: Vec<f64>,
},
Strange {
dimension: f64,
},
Repeller,
}
#[derive(Clone, Debug)]
pub struct BifurcationPoint {
pub parameter_value: f64,
pub bifurcation_type: BifurcationType,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum BifurcationType {
SaddleNode,
Transcritical,
Pitchfork,
HopfBifurcation,
PeriodDoubling,
}
#[derive(Clone, Debug)]
pub struct PoincareSectionResult {
pub points: Vec<Vec<f64>>,
pub recurrence_times: Vec<f64>,
}
#[derive(Clone, Debug)]
pub struct FractalDimension {
pub value: f64,
pub method: DimensionMethod,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum DimensionMethod {
BoxCounting,
CorrelationDimension,
LyapunovDimension,
}