#分数 #矩阵 #矩阵运算 #执行 #向量

mymatrix

我的简单矩阵库,可以执行分数运算。

6个版本 (破坏性更新)

0.6.0 2024年8月24日
0.5.0 2024年8月17日
0.4.0 2024年8月7日
0.3.0 2024年3月25日
0.1.0 2024年3月24日

数学 中排名第 486

Download history 3/week @ 2024-05-18 1/week @ 2024-05-25 2/week @ 2024-06-08 107/week @ 2024-08-03 12/week @ 2024-08-10 133/week @ 2024-08-17

每月下载量 252
pyinrs 中使用

MIT 和 AGPL-3.0-or-later

23KB
530 行代码(不包括注释)

MyMatrix

我的简单矩阵库,可以执行分数运算。

1. 属性

  • 名称:MyMatrix。
  • 语言:Rust,需要rustc版本 >= 1.75.0
  • 目标:编写一个可以执行分数运算的简单矩阵库。
  • 模块:Fraction,Vector,Matrix
  • 风格:遵循Rust官方推荐风格。
  • 测试:使用 rstest 进行单元测试,并确保所有测试通过。
  • 安全性:没有 unsafe 代码块。
  • 文档:使用 cargo doc --open 打开文档。

2. 使用方法

要使用它,将以下行添加到您的 Cargo.toml 文件中

[dependencies]
mymatrix = "0"

一些简单的示例

use mymatrix::{Fraction, Vector, Matrix};

// Vector dot product
Vector::from([1, 2, 3]) * Vector::from([4, 5, 6]); // 32
// Vector cross product
Vector::cross(&[1, 2, 3].into(), &[4, 5, 6].into()); // [-3  6 -3]
// Vector scalar product
Vector::from([1, 2, 3]) * Fraction::from((2, 5)); // [2/5 4/5 6/5]

// Matrix rank
Matrix::from([[1, 2, 3], [4, 5, 6], [7, 8, 0]]).rank(); // 3
// Matrix determinant
Matrix::from([[1, 2, 3], [4, 5, 6], [7, 8, 0]]).det().unwrap(); // 27
// Matrix inversion
Matrix::from([[1, 2, 3], [4, 5, 6], [7, 8, 0]]).inv().unwrap();
/*
[
-16/9   8/9  -1/9
 14/9  -7/9   2/9
 -1/9   2/9  -1/9
]
*/

let a = Matrix::from([[1, 2], [3, 4]]);
let b = Matrix::zeros(2, 2);
let c = Matrix::ones(2, 2);
let d = Matrix::identity(2);

((a + b) * (c + d)).inv().unwrap();
/*
[
-11/6   5/6
  5/3  -2/3
]
*/

// inv(A) = (1/det(A)) * adj(A)
let A = Matrix::from([[1, 2, 3], [4, 5, 6], [7, 8, 0]]);
assert_eq!(A.inv().unwrap(), (Fraction::from(1) / A.det().unwrap()) * A.adj());

依赖关系

~3.5–5MB
~96K SLoC