Module ndarray_linalg::eigh

source ·
Expand description

Eigendecomposition for Hermitian matrices.

For a Hermitian matrix A, this solves the eigenvalue problem A V = V D for D and V, where D is the diagonal matrix of eigenvalues in ascending order and V is the orthonormal matrix of corresponding eigenvectors.

For a pair of Hermitian matrices A and B where B is also positive definite, this solves the generalized eigenvalue problem A V = B V D, where D is the diagonal matrix of generalized eigenvalues in ascending order and V is the matrix of corresponding generalized eigenvectors. The matrix V is normalized such that V^H B V = I.

§Example

Find the eigendecomposition of a Hermitian (or real symmetric) matrix.

use approx::assert_abs_diff_eq;
use ndarray::{array, Array2};
use ndarray_linalg::{Eigh, UPLO};

let a: Array2<f64> = array![
    [2., 1.],
    [1., 2.],
];
let (eigvals, eigvecs) = a.eigh(UPLO::Lower)?;
assert_abs_diff_eq!(eigvals, array![1., 3.]);
assert_abs_diff_eq!(
    a.dot(&eigvecs),
    eigvecs.dot(&Array2::from_diag(&eigvals)),
);

Traits§

  • Calculate eigenvalues without eigenvectors
  • Calculate eigenvalues without eigenvectors
  • Calculate eigenvalues without eigenvectors
  • Eigenvalue decomposition of Hermite matrix reference
  • Eigenvalue decomposition of mutable reference of Hermite matrix
  • Eigenvalue decomposition of Hermite matrix
  • Calculate symmetric square-root matrix using eigh
  • Calculate symmetric square-root matrix using eigh