3 个不稳定版本
0.1.1 | 2019 年 5 月 17 日 |
---|---|
0.1.0 | 2019 年 5 月 16 日 |
0.0.1 | 2019 年 2 月 27 日 |
#755 in 数学
每月 31 次下载
255KB
4.5K SLoC
隐式微分代数求解器
ida
是 Sundials 套件中隐式微分代数求解器的 Rust 版本。它是对微分代数方程组(DAEs)的初值问题(IVP)的通用求解器。
查看
- https://computation.llnl.gov/projects/sundials/ida
- https://computation.llnl.gov/sites/default/files/public/ida_guide.pdf
原始的 ida 基于早期的数值代码(daspk),并使用 ANSI 标准的 C 语言编写。它为用户提供了在求解基础的非线性系统时选择牛顿/直接和精确牛顿/克里洛夫(迭代)方法的选择。Rust 版本也允许这种选择,但使用 Rust Traits 在编译时实现。
ida
使用 ndarray
crate 来提供可变长度的矢量和矩阵。标量数据类型作为通用参数对用户可用。
目标
我开始这个项目是为了支持我模拟功能模拟单元(FMU)的其他工作,因此优先支持这个用例。
算法的数值行为已经编写,以完全匹配原始代码使用 double
数据类型,同时允许重构数据结构、错误处理代码和泛型以利用 Rust 的优势。
状态
截至版本 0.1.0
- 'Roberts' 示例应与原始版本在数值上完全相同。
- 仅实现了直接线性求解器和牛顿非线性求解器。
- 仅实现了密集矢量和矩阵数学。
- 还有很多代码和垃圾注释需要清理。
- 还有很多额外的功能和示例需要移植(Krylov 求解器、雅可比近似、约束等)。
许可证
BSD3 许可证,请参阅 LICENSE 文件。
依赖关系
~1.9–2.7MB
~50K SLoC