#math #function #variables #derivative #derivation #parser #2d-3d

ruut-functions

一个用于从字符串解析数学函数(1D,2D,3D,ND)并执行符号导数、梯度、海森矩阵的crate。

12个发布版本

0.2.1 2024年7月18日
0.2.0 2024年7月18日
0.1.2 2024年4月30日
0.0.61 2023年4月23日
0.0.5 2023年2月19日

#6#derivation

Download history 167/week @ 2024-04-13 78/week @ 2024-04-20 125/week @ 2024-04-27 12/week @ 2024-05-04 3/week @ 2024-05-18 2/week @ 2024-05-25 3/week @ 2024-06-29 23/week @ 2024-07-06 170/week @ 2024-07-13 24/week @ 2024-07-20 44/week @ 2024-07-27

261 每月下载量

MIT许可证

71KB
2K SLoC

功能

  • 1D,2D,3D,ND(具有自定义变量)函数
  • 设置参数并分配值(默认为0.0)
  • 计算任意阶数的导数、梯度、海森矩阵
  • F1D可以数值积分
  • 支持以下函数
    • Ln, Sin, Cos, Tan, Sec, Csc, ASin, ACos, ATan, Sinh, Cosh, Tanh, Coth, Sech, Csch, ASinh, ACosh, ATanh, Abs
  • 某种类型的表达式简化

示例

use ruut_functions::{f3d, F3D};

fn main() {
    let mut f = f3d!("x^3+y^2+yx^2+[eta]");
    f.set_par("eta", 6.9);
    assert_eq!(f.eval(0., 0., 0.), 6.9);
    assert_eq!(
        f.gradient(),
        vec![f3d!("2xy+3x^2"), f3d!("2y+x^2"), f3d!("0")]
    );
    assert_eq!(
        f.hessian(),
        vec![
            vec![f3d!("2y+6x"), f3d!("2x"), f3d!("0")],
            vec![f3d!("2x"), f3d!("2"), f3d!("0")],
            vec![f3d!("0"), f3d!("0"), f3d!("0")]
        ]
    )


    let f = f1d!("abs(x)+sin(x)");
    assert_eq!(f.eval(-2),2.90929742683)
}

lib.rs:

Crate用于从字符串创建数学函数并执行符号导数

无运行时依赖