2 unstable releases
0.2.0 | Aug 9, 2024 |
---|---|
0.1.0 | Jul 31, 2024 |
#741 in Math
14KB
277 lines
Eigen decomposition of Hermitian matrices using Lanczos algorithm
Overview
Using Lanczos algorithm to estimate the extremal Eigen values and Eigen vectors of an Symmetrics Hermitian matrix.
Supports both dense and sparse matrices via nalgebra_sparse.
Works well for large sparse matrices
cargo add lanczos
Examples
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
:
Eigen decomposition of Hermitian matrices using Lanczos algorithm
Using Lanczos algorithm to estimate the extremal Eigen values and Eigen vectors of an Symmetrics Hermitian matrix.
Supports both dense and sparse matrices via [nalgebra_sparse].
Works well for large sparse matrices
Examples
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));
Dependencies
~6MB
~113K SLoC