#matrix #algebra #scalar #matrix-operations #arithmetic #func #div

bin+lib matrix_algebra

支持矩阵代数的crate

1 个不稳定版本

0.1.0 2022年3月27日

1821数学

MIT 协议

27KB
764

matrix-algebra


lib.rs:

本crate旨在支持基本的矩阵运算和算术。它对底层标量类型的选取非常开放。

例如,标量类型可以选择任何实现了常见算术特征的类型,如 AddSubDiv 等...

本crate的核心类型是 MatrixScalarFunc。创建矩阵的方式如下

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);

无运行时依赖