#approximation #integration #calculus #algorithm

numerical-integration

数值近似算法和特性

1 个不稳定版本

0.0.1 2021年11月30日

#27#calculus

MIT 协议

20KB
303 代码行

数值积分

Rust语言中的数值近似算法和特性

该crate的目的是提供一组常用的近似微分方程的算法,并统一它们在公共API下,以便尽可能简化使用和测试不同积分方案的过程。

如何使用

API的主要入口点是IntegratorVelIntegratorAdaptiveIntegrator特性。每个特性都有一个init()方法和step()。它们都被设计成所有积分器的值和状态都存储在外部,并通过方法参数传递。

每个特性代表一类需要不同类型数据的算法。Integrator特性接受当前状态和时间、时间步长以及一个可以计算状态向量导数的闭包/函数。 VelIntegrator执行同样的操作,但还需要一个以复杂方式计算速度的函数。而AdaptiveIntegrator接受最小误差值而不是时间步长。

除了上述特性之外,还有类似上述特性的特性,但它们在函数签名中不包含泛型,以便可以作为dyn类型使用。

使用方法,您可以一般地使用特性并传递特定的实现者,或者直接使用各种算法。

目前,此crate包括速度Verlet和Runge-Kutta家族中的方法(包括欧拉和RK4),但如果足够多的人想要它们,还可以添加其他方法(如线性多步法)。

项目当前状态

该项目目前处于暂停状态,除非足够多的人表示对其感兴趣并希望继续开发,否则可能保持这种状态。如果真的发生这种情况,请期待API会有破坏性的变化,因为我对当前的设计并不完全满意,而且我希望添加的某些特性需要对设计进行轻微的重构。

依赖关系

~315KB