2 个不稳定版本

0.2.0 2024 年 8 月 9 日
0.1.0 2024 年 7 月 31 日

#422数学

Download history 117/week @ 2024-07-29 108/week @ 2024-08-05 19/week @ 2024-08-12

每月 244 次下载

MIT/Apache

14KB
277 代码行

使用 Lanczos 算法对厄米矩阵进行特征分解

概述

使用 Lanczos 算法 估计对称厄米矩阵的极值特征值和特征向量。

通过 [nalgebra_sparse] 支持 dense 和 sparse 矩阵。

对于大型稀疏矩阵表现良好

cargo add lanczos

示例

use nalgebra::DMatrix;
use lanczos::{Hermitian, Order};

// ...
let eigen = matrix.eigsh(50, Order::Smallest);

// Sorted by eigenvalue in ascending order
eprintln!("{}", eigen.eigenvalues);
// Columns sorted according to eigenvalues
eprintln!("{}", eigen.eigenvectors);

// Second smallest eigen value
eprintln!("{}", eigen.eigenvalues[1]);
// Eigen vector corresponding to the second smallest eigen value
eprintln!("{}", eigen.eigenvectors.column(1));

lib.rs:

使用 Lanczos 算法对厄米矩阵进行特征分解

使用 Lanczos 算法 估计对称厄米矩阵的极值特征值和特征向量。

通过 [nalgebra_sparse] 支持 dense 和 sparse 矩阵。

对于大型稀疏矩阵表现良好

示例

use lanczos::{Hermitian, Order};

let eigen = matrix.eigsh(50, Order::Smallest);

// Sorted by eigenvalue in ascending order
eprintln!("{}", eigen.eigenvalues);
// Columns sorted according to eigenvalues
eprintln!("{}", eigen.eigenvectors);

// Second smallest eigen value
eprintln!("{}", eigen.eigenvalues[1]);
// Eigen vector corresponding to the second smallest eigen value
eprintln!("{}", eigen.eigenvectors.column(1));

依赖项

~6MB
~116K SLoC