Expand description
§differential-equations
A Rust library for solving various types of differential equations.
§Overview
This library provides numerical solvers for different classes of differential equations:
-
Ordinary Differential Equations (ODE)
- Initial value problems (ODEProblem)
- Fixed and adaptive step methods
- Event detection
- Customizable output control
-
Delay Differential Equations (DDE)
- Constant delays
- State-dependent delays
- Same features as ODEs
-
Stochastic Differential Equations (SDE)
- Drift-diffusion equations
- User controlled random number generation
- Same features as ODEs
§Feature Flags
polars: Enable converting Solution to Polars DataFrame usingSolution.to_polars()
§Example (ODE)
use differential_equations::prelude::*;
use nalgebra::{SVector, vector};
pub struct LinearEquation {
pub a: f64,
pub b: f64,
}
impl ODE<f64, SVector<f64, 1>> for LinearEquation {
fn diff(&self, _t: f64, y: &SVector<f64, 1>, dydt: &mut SVector<f64, 1>) {
dydt[0] = self.a + self.b * y[0];
}
}
fn main() {
let system = LinearEquation { a: 1.0, b: 2.0 };
let t0 = 0.0;
let tf = 1.0;
let y0 = vector![1.0];
let problem = ODEProblem::new(system, t0, tf, y0);
let mut solver = ExplicitRungeKutta::dop853().rtol(1e-8).atol(1e-6);
let solution = match problem.solve(&mut solver) {
Ok(sol) => sol,
Err(e) => panic!("Error: {:?}", e),
};
for (t, y) in solution.iter() {
println!("t: {:.4}, y: {:.4}", t, y[0]);
}
}§License
Copyright 2025 Ryan D. Gast
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.Re-exports§
pub use solout::Solout;
Modules§
- alias
- Type Alias for readablity
- dde
- Delay Differential Equations (DDE) Module
- derive
- interpolate
- Interpolation Methods for the ODEProblem struct when solving the system.
- linalg
- Linear algebra helper operations
- methods
- Numerical Methods for Differential Equations
- ode
- Ordinary Differential Equations (ODE) Module
- prelude
- Prelude module for the Differential Equations library.
- sde
- Stochastic Differential Equations (SDE) Module
- solout
- Solout trait and common implementations for controlling the output of differential equation solvers.
- traits
- Defines Generics for the library. Includes generics for the floating point numbers.
- utils
Structs§
- Solution
- Solution of returned by differential equation solvers
Enums§
- Control
Flag - Control flag for solver execution flow
- Error
- Error for Differential Equations Crate
- Status
- Status for solving differential equations