6 个版本
0.4.0 | 2021 年 5 月 25 日 |
---|---|
0.3.2 | 2019 年 11 月 4 日 |
0.3.1 | 2019 年 8 月 22 日 |
0.2.2 | 2019 年 8 月 5 日 |
#889 in WebAssembly
每月 33 下载
33KB
623 代码行
RUSFUN
rusfun crate 是一个小型库,可以将 Rust 中的参数化函数编译成 wasm。此外,它还包含最小化例程,用于在给定的数据集中找到最小化成本函数的参数。
目前实现了 Levenberg-Marquardt 算法来最小化
要定义一个函数,定义一个 Func1D 结构体,其中包含初始参数 p 的引用,域 x 的引用以及将 p 和 x 映射到模型值 f(x) 的函数。标准库中预定义了一些模型,包括 size_distribution 和 sas 模块。
例如,要初始化高斯函数,可以这样做
let p = array![300.0, 3.0, 0.2, 0.0];
let model = size_distribution::gaussian;
let model_function = func1d::Func1D::new(&p, &x, model);
注意,p 和 x 是 ndarray。
然后可以通过调用
model_function.output()
来评估该函数
let mut minimizer = curve_fit::Minimizer::init(&model_function, &y, &sy, 0.01);
为了最小化给定数据 (xᵢ, yᵢ, σᵢ) 的模型,需要将 Minimizer 结构体初始化为可变变量,其中包含先前定义的模型函数,y 和 σ 的 ndarray 引用,以及 LM 步骤的初始 ƛ 值。
minimizer.fit()
然后可以通过
minimizer.report()
来执行拟合,并通过
来打印结果
到目前为止,rusfun crate 的基本功能。该 crate 非常年轻,当实现更多拟合算法的灵活性时,语法可能会有破坏性更改。
依赖项