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.50.2.1:添加了使用rayon的并行算法0.2.0:更新到ndarray 0.9
依赖项
约2MB
约39K SLoC