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 算法

Download history 102/week @ 2024-04-27 326/week @ 2024-05-04 82/week @ 2024-05-11 28/week @ 2024-05-18 307/week @ 2024-05-25 249/week @ 2024-06-01 68/week @ 2024-06-08 52/week @ 2024-06-15 202/week @ 2024-06-22 31/week @ 2024-06-29 649/week @ 2024-07-06 58/week @ 2024-07-13 17/week @ 2024-07-20 195/week @ 2024-07-27 152/week @ 2024-08-03 21/week @ 2024-08-10

387 每月下载量
用于 2 个crate(通过 pharmsol

MIT 和可能 GPL-3.0-or-later

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