2 个版本
使用旧的 Rust 2015
0.1.2 | 2017年2月18日 |
---|---|
0.1.0 | 2016年9月13日 |
#6 in #runge-kutta
14KB
201 行
ODE.rs
提供使用不同方法的通用常微分方程(ODE)求解器。同时,允许用户选择他们希望用于该问题的数据类型,无论是 f32
、u8
或某些非标准大数类型。
目前绝对不适用于任何严重的用途。代码需要清理,还有许多内容尚未实现。
示例
use ode::{Method, Solver};
let ini_cond: Vec<f32> = vec![1., 2.];
// simple config
Solver::new(&ini_cond, |t: &f32, _: &Vec<f32>| vec![2.*t])
.method(Method::RK4)
.run();
// complex config
let mut s = Solver::new(&ini_cond, |t: &f32, _: &Vec<f32>| vec![2.*t] );
s.method(Method::RK4);
// run the solver
let (times, pos) = s.run();
当前目标
对于下一个次要版本(0.2.0)
- 更多和更好的文档;
- 重新实现四阶龙格-库塔方法;
- 至少有几个测试和示例;
- 稳定 API。
对于下一个主要版本(1.0.0)
- 找出一种通用的方式来编写所有的龙格-库塔变体,既易于维护,又易于阅读;
- 实现所有计划中的龙格-库塔变体;
- 2;
- 3;
- 4;
- 5.
发行说明
-
0.?.? [进行中]
-
0.1.2: 兼容性中断
将 Number 特性修改为使用 num_traits 插件,以便接受的数据类型与社区中已有的类型更一致。
为了保持函数名的连贯性,
solver::Solver::change_weight()
现在称为solver::Solver::weights()
。此外,还有一些文档。
RK4 已上线,目前是唯一可用的方法。
-
0.1.1 [不可用]: 兼容性中断
关闭问题 #1,这摒弃了 MATLAB 风格,转而采用更 Rust 风格的方式。这还开始了构建版本 0.2.0 的过程,试图稳定 API。
这是一个不可用的版本,因为
solver::Solver::run()
总是返回空向量。 -
0.1.0: 第一稿
开始此项目是为了尝试将 MATLAB 风格的常微分方程(ODE)求解器引入 Rust。API 完全不稳定,可能随时更改。
目前只有 RK4 方法可用,用法非常基础。
依赖项
~240KB