1 个不稳定版本
0.1.0 | 2022年3月27日 |
---|
1821 在 数学 中
27KB
764 行
matrix-algebra
lib.rs
:
本crate旨在支持基本的矩阵运算和算术。它对底层标量类型的选取非常开放。
例如,标量类型可以选择任何实现了常见算术特征的类型,如 Add
、Sub
、Div
等...
本crate的核心类型是 Matrix
、Scalar
和 Func
。创建矩阵的方式如下
use matrix_algebra::Matrix;
let m = Matrix::new(vec![vec![0, 1], vec![2, 3]]);
在类型 `Matrix` 上实现了常见的算术运算符
use matrix_algebra::Matrix;
let m1 = Matrix::new(vec![vec![0, 1], vec![2, 3]]);
let m2 = Matrix::new(vec![vec![0, 1], vec![2, 3]]);
assert_eq!(m1 + m2, Matrix::new(vec![vec![0, 2], vec![4, 6]]));
此外,还可以将 `Func` 元素包裹的函数逐元素应用于矩阵
use matrix_algebra::{Matrix, Func};
let sin = Func::new(|x| f64::sin(x));
let m = Matrix::new(vec![vec![0.0, 1.0], vec![2.0, 3.0]]);
assert_eq!(
sin%m,
Matrix::new(
vec![vec![f64::sin(0.0), f64::sin(1.0)], vec![f64::sin(2.0), f64::sin(3.0)]]
)
);
标量可以从左侧相乘
use matrix_algebra::{Matrix, Scalar};
let m = &Matrix::new(vec![vec![0, 1], vec![2, 3]]);
let s = Scalar(2);
assert_eq!(s*m, m*2);