53个版本
0.15.3 | 2023年12月8日 |
---|---|
0.15.2 | 2023年7月8日 |
0.15.1 | 2023年6月21日 |
0.14.0 | 2022年10月2日 |
0.0.3 | 2018年11月19日 |
#59 in 数学
6,779 每月下载次数
用于 13 个 crates (8 个直接使用)
690KB
16K SLoC
Mathru
Mathru是一个包含线性代数、分析、统计学和优化算法的数值库,它使用纯Rust编写,可选的BLAS/LAPACK作为后端。
特性
以下特性在此crate中实现
-
分析
- 积分
- 牛顿-科茨公式
- 高斯-勒让德公式
- 常微分方程(ODE)
- 插值
- 三次样条
- 积分
-
- 高斯-牛顿算法
- 梯度下降
- 牛顿法
- Levenberg-Marquardt算法
- 共轭梯度法
-
初等函数
- 三角函数
- 双曲函数
- 指数函数
- 幂函数
- 三角函数
用法
将此内容添加到您的 Cargo.toml
以启用原生Rust实现
[dependencies.mathru]
version = "0.15"
如果应使用openblas库,请将以下行添加到 'Cargo.toml' 中
[dependencies.mathru]
version = "0.15"
default-features = false
features = "openblas"
以下线性代数的实现之一可以作为功能激活
- native: 原生Rust实现(默认激活)
- openblas: 优化的BLAS库
- netlib: 数学软件、论文和数据库集合
- intel-mkl: Intel数学内核库
- accelerate 进行大规模数学计算和图像计算,针对高性能和低能耗优化。(仅限macOS)
求解线性方程组
use mathru::{
algebra::linear::{
matrix::{LUDec, Solve},
General, Vector,
},
matrix, vector,
};
/// Solves a system of linear equations
fn main()
{
let a: General<f64> = matrix![6.0, 2.0, -1.0;
-3.0, 5.0, 3.0;
-2.0, 1.0, 3.0];
let b: Vector<f64> = vector![48.0;
49.0;
24.0];
// Decompose a into a lower and upper matrix
let lu_dec: LUDec<f64> = a.dec_lu().unwrap();
// Solve the system of linear equations with the decomposed matrix
let _x1: Vector<f64> = lu_dec.solve(&b).unwrap();
// Solve it directly
let _x2: Vector<f64> = a.solve(&b).unwrap();
}
使用Dormand-Prince算法求解常微分方程
use mathru::{
algebra::linear::vector::Vector,
analysis::differential_equation::ordinary::{problem, DormandPrince54, ExplicitODE},
};
fn main()
{
// Create an ODE instance
let problem: problem::Euler<f64> = problem::Euler::default();
let (x_start, x_end) = problem.time_span();
// Create a ODE solver instance
let h_0: f64 = 0.0001;
let n_max: u32 = 800;
let abs_tol: f64 = 10e-7;
let solver: DormandPrince54<f64> = DormandPrince54::new(abs_tol, h_0, n_max);
// Solve ODE
let (x, y): (Vec<f64>, Vec<Vector<f64>>) = solver.solve(&problem).unwrap();
}
更多示例
有关更多示例,请参阅项目页面
文档
有关更多信息、示例和API文档,请参阅项目页面。
许可证
许可下
贡献
欢迎任何贡献!
依赖关系
~0.8–24MB
~300K SLoC