#inverse #ndarray #linear-algebra #matrix-operations #determinant

bin+lib ndarray-inverse

纯 Rust ndarray Array2 的逆和行列式特质

4 个版本

0.1.9 2023年1月30日
0.1.8 2023年1月4日
0.1.7 2022年12月28日
0.1.6 2022年11月23日

#366 in 数学

Download history 34/week @ 2024-03-13 25/week @ 2024-03-20 14/week @ 2024-03-27 71/week @ 2024-04-03 87/week @ 2024-04-10 20/week @ 2024-04-17 62/week @ 2024-04-24 63/week @ 2024-05-01 66/week @ 2024-05-08 39/week @ 2024-05-15 57/week @ 2024-05-22 27/week @ 2024-05-29 85/week @ 2024-06-05 124/week @ 2024-06-12 101/week @ 2024-06-19 311/week @ 2024-06-26

626 次每月下载

MIT/Apache

87KB
1.5K SLoC

ndarray 的逆和行列式特质

在创建卡尔曼滤波代码时,需要矩阵求逆...

安装用于计算逆的外部代码既麻烦又痛苦。因此有了这个小特质。对于较小的矩阵来说,它很快,但是,正如预期的那样,使用专用硬件的专用库对于大型矩阵来说要快得多。不过,你仍然应该使用迭代/近似方法,例如梯度下降,用于机器学习应用。

如果你使用的是相对较小到中等的矩阵,在多个操作系统上,没有复杂的硬件,那么这里就是用例。

如果你的优先级是安装简单、纯 Rust 和可移植性,那么这段代码可能很有用。API 简单直观。你可以开始编写你的应用程序代码,而不必担心在多个操作系统上的复杂组件。

只需引用

use ndarray_inverse::Inverse;

添加 cargo 依赖项

ndarray-inverse = "*"

Array2 矩阵上可用的方法有 m.inv() 和 m.det()。显然,它们必须是方阵。

版本 1.6 添加了 m.inv_diag(),它将给出对角矩阵的逆,这要快得多,但是忽略任何非零的非对角值。这非常快,有时很有用,可能被认为是一些应用的“正则化”(例如,使用卡尔曼滤波的强化学习)。

版本 1.7 添加了 m.cholesky(),这对于无味卡尔曼滤波很有用。

版本 1.8 添加了 m.lu() 分解(它返回一个包含 (L,U,P) 值的元组以及相关的逆 (m.lu_inv()),对于较大的矩阵来说,速度要快得多,大约快 10 倍。主要的逆函数仍然是 m.inv(),它尝试 LU 分解,但如果它不合适,则无缝回退到标准方法。这使得单 CPU 矩阵逆计算速度在大多数情况下与外部库版本相当。

版本 1.9 使 m.inv_ut() 和 m.inv_lt() 上三角和下三角逆对外部调用可用。

依赖关系

~1.5MB
~25K SLoC