eigenvalues 0.4.0

algorithms to compute eigenvalue/eigenvectors of symmetric matrices
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use nalgebra as na;

use eigenvalues::algorithms::lanczos::HermitianLanczos;
use eigenvalues::utils::{generate_random_sparse_symmetric, sort_eigenpairs};
use eigenvalues::SpectrumTarget;

fn main() {
    let matrix = generate_random_sparse_symmetric(200, 5, 0.5);
    let eig = sort_eigenpairs(na::linalg::SymmetricEigen::new(matrix.clone()), false);
    let spectrum_target = SpectrumTarget::Highest;
    let lanczos = HermitianLanczos::new(matrix, 50, spectrum_target).unwrap();
    println!("Computed eigenvalues:\n{}", lanczos.eigenvalues.rows(0, 3));
    println!("Expected eigenvalues:\n{}", eig.eigenvalues.rows(0, 3));
    let x = eig.eigenvectors.column(0);
    let y = lanczos.eigenvectors.column(0);
    println!("parallel:{}", x.dot(&y));
}