18次发布
0.2.1 | 2024年8月6日 |
---|---|
0.2.0 | 2024年8月1日 |
0.1.15 | 2024年7月10日 |
0.1.11 | 2024年6月24日 |
0.1.2 | 2024年2月20日 |
#616 in 算法
387 每月下载量
用于 2 个crate(通过 pharmsol)
560KB
13K SLoC
DiffSol
DiffSol是一个用于在Rust中求解常微分方程(ODE)或半显式微分代数方程(DAE)的库。您可以使用nalgebra或faer crates中的向量和矩阵,或者通过在diffsol中实现各种向量和矩阵特质来自定义类型。
特性
DiffSol实现了以下求解器
- 适用于刚性问题和奇异质量矩阵的可变阶向后差分公式(BDF)求解器。
- 适用于适度刚性问题和奇异质量矩阵的单对角隐式Runge-Kutta(SDIRK或ESDIRK)求解器。您可以使用自己的Butcher表格或使用提供的(code>tr_bdf2或code>esdirk34)。
所有求解器都具备自适应步长控制、密集输出、事件处理、跳转到特定时间点和前向灵敏度分析功能。例如,BDF求解器与MATLAB的ode15s求解器、SciPy的solve_ivp函数中的bdf求解器或SUNDIALS中的BDF求解器类似。使用提供的tr_bdf2表格的ESDIRK求解器与MATLAB的ode23t求解器类似。
用户可以在以下常微分方程形式中指定要解决的方程,可以使用闭包或DiffSL领域特定语言(DSL)
M \frac{dy}{dt} = f(t, y, p)
其中 $M$ 是一个(可能为奇异的)质量矩阵,$y$ 是状态向量,$t$ 是时间,$p$ 是参数向量,$f$ 是右手边函数。质量矩阵 $M$ 是可选的(如果没有提供,则假定为单位矩阵)。
安装
有关说明,请参阅crates.io页面。
使用方法
有关更多文档和示例,请参阅API文档。
依赖项
~17–32MB
~642K SLoC