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 数学

Download history 1356/week @ 2024-04-21 971/week @ 2024-04-28 1229/week @ 2024-05-05 1384/week @ 2024-05-12 1339/week @ 2024-05-19 1107/week @ 2024-05-26 1251/week @ 2024-06-02 952/week @ 2024-06-09 1100/week @ 2024-06-16 1216/week @ 2024-06-23 1282/week @ 2024-06-30 1350/week @ 2024-07-07 1688/week @ 2024-07-14 1714/week @ 2024-07-21 1752/week @ 2024-07-28 1541/week @ 2024-08-04

6,779 每月下载次数
用于 13 crates (8 个直接使用)

MIT 许可证

690KB
16K SLoC

Mathru

crate documentation maintenance pipeline status

Mathru是一个包含线性代数、分析、统计学和优化算法的数值库,它使用纯Rust编写,可选的BLAS/LAPACK作为后端。

特性

以下特性在此crate中实现

  • 代数

  • 分析

    • 积分
      • 牛顿-科茨公式
      • 高斯-勒让德公式
    • 常微分方程(ODE)
      • 显式方法
        • 欧拉方法
        • 海恩二阶方法
        • 中点方法
        • 拉尔斯顿二阶方法
        • 三阶库塔方法
        • 海恩三阶方法
        • 拉尔斯顿三阶方法
        • 四阶龙格-库塔方法
        • 龙格-库塔-费尔贝格方法
        • 多姆兰德-普林斯方法
        • 卡斯-卡尔方法
        • 博加奇-尚皮恩方法
        • 亚当斯-巴什福斯方法
      • 具有起始步长的自动步长控制
      • 隐式方法
        • 隐式欧拉方法
        • 向后差分公式(BDF)
    • 插值
      • 三次样条
  • 优化

    • 高斯-牛顿算法
    • 梯度下降
    • 牛顿法
    • Levenberg-Marquardt算法
    • 共轭梯度法
  • 统计学

    • 概率分布
      • 伯努利分布
      • 贝塔分布
      • 二项分布
      • 指数分布
      • 伽马分布
      • 卡方分布
      • 正态分布
      • 对数正态分布
      • 泊松分布
      • 升余弦分布
      • 学生t分布
      • 均匀分布
    • 测试
  • 初等函数

    • 三角函数
    • 双曲函数
    • 指数函数
    • 幂函数
    • 三角函数
  • 特殊函数

    • 伽马函数
      • 伽马函数
      • 对数伽马函数
      • 双伽马函数
      • 上不完全伽马函数
      • 上不完全正则伽马函数
      • 逆上不完全正则伽马函数
      • 下不完全伽马函数
      • 下正则不完全伽马函数
      • 逆下正则不完全伽马函数
    • 贝塔函数
      • 贝塔函数
      • 不完全贝塔函数
      • 不完全正则贝塔函数
    • 误差函数
      • 误差函数
      • 补充误差函数
      • 逆误差函数
      • 逆补充误差函数
    • 超几何函数

用法

将此内容添加到您的 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