4 个版本 (2 个重大变更)
0.6.0 | 2019年8月12日 |
---|---|
0.5.0 | 2019年3月12日 |
0.4.1 | 2018年3月13日 |
0.4.0 | 2018年1月22日 |
在 算法 中排名 1180
37KB
641 行
Gram Schmidt 正交化
在 Rust 编程语言和 rust-ndarray
中实现矩阵的正交化和 QR 分解。
此软件包提供以下方法
- 经典 Gram Schmidt,
cgs
, - 改进 Gram Schmidt,
mgs
, - 经典 Gram Schmidt 与重正交化,
cgs2
。
用法
// Import openblas_src or another blas source to have the linker find all symbols.
extern crate openblas_src;
use gramschmidt::{
GramSchmidt,
Reorthogonalized,
Result,
};
use ndarray::arr2;
fn main() -> Result<()> {
let small_matrix = arr2(
&[[2.0, 0.5, 0.0, 0.0],
[0.0, 0.3, 0.0, 0.0],
[0.0, 1.0, 0.7, 0.0],
[0.0, 0.0, 0.0, 3.0]]
);
let mut cgs2 = Reorthogonalized::from_matrix(&small_matrix)?;
cgs2.compute(&small_matrix)?;
assert!(small_matrix.all_close(&cgs2.q().dot(cgs2.r()), 1e-14));
Ok(())
}
最新版本
0.6.0
:修复了三角矩阵R
的维度- 上一个版本在技术上足够大以容纳所有值,但矩阵维度仍然不正确。
- 添加了如何使用不同算法因式分解 Lauchli 矩阵的示例。
0.5.0
:重构库并更新为 2018 版本- 现在所有 Gram Schmidt 因子分解都通过
GramSchmidt
特性实现; - 引入了一些错误处理;
- 提供便利函数
cgs
、cgs2
和mgs
。
- 现在所有 Gram Schmidt 因子分解都通过
0.4.1
:修复了文档测试并扩展和简化了测试。0.4.0
:库结构的重大重构- 现在算法通过结构体配置,已删除特性;
- 提供结构体
ClassicalGramSchmidt
、ModifiedGramSchmidt
和ReorthogonalizedGramSchmidt
(在文献中分别称为cgs
、mgs
和cgs2
); cgs
和cgs2
使用blas
程序实现(速度大幅提升!);- 所有例程现在都能处理列主序(Fortran-)和行主序(C-)输入矩阵;
- 删除并行代码。
0.3.1
:更新到blas 0.16
并未指定默认后端(以便用户可以设置它)。0.3.0
:更新到ndarray 0.10
,ndarray-parallel 0.5
0.2.1
:添加了使用rayon
的并行算法0.2.0
:更新到ndarray 0.9
依赖项
约2MB
约39K SLoC