#微分

ida

来自 Sundials 套件的隐式微分代数求解器的纯 Rust 版本

3 个不稳定版本

0.1.1 2019 年 5 月 17 日
0.1.0 2019 年 5 月 16 日
0.0.1 2019 年 2 月 27 日

#755 in 数学

每月 31 次下载

BSD-3-Clause

255KB
4.5K SLoC

隐式微分代数求解器

Crate docs.rs pipeline status codecov

ida 是 Sundials 套件中隐式微分代数求解器的 Rust 版本。它是对微分代数方程组(DAEs)的初值问题(IVP)的通用求解器。

查看

原始的 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