eig

Function eig 

Source
pub fn eig<F>(
    a: &ArrayBase<ViewRepr<&F>, Dim<[usize; 2]>>,
    workers: Option<usize>,
) -> Result<(ArrayBase<OwnedRepr<Complex<F>>, Dim<[usize; 1]>>, ArrayBase<OwnedRepr<Complex<F>>, Dim<[usize; 2]>>), LinalgError>
where F: Float + NumAssign + Sum + Send + Sync + ScalarOperand + 'static,
Expand description

Compute the eigenvalues and right eigenvectors of a square matrix.

§Arguments

  • a - Input square matrix
  • workers - Number of worker threads (None = use default)

§Returns

  • Tuple (eigenvalues, eigenvectors) where eigenvalues is a complex vector and eigenvectors is a complex matrix whose columns are the eigenvectors

§Examples

use scirs2_core::ndarray::array;
use scirs2_linalg::eigen::standard::eig;

let a = array![[1.0_f64, 0.0], [0.0, 2.0]];
let (w, v) = eig(&a.view(), None).expect("Operation failed");

// Sort eigenvalues (they may be returned in different order)
let mut eigenvalues = vec![(w[0].re, 0), (w[1].re, 1)];
eigenvalues.sort_by(|a, b| a.0.partial_cmp(&b.0).expect("Operation failed"));

assert!((eigenvalues[0].0 - 1.0).abs() < 1e-10);
assert!((eigenvalues[1].0 - 2.0).abs() < 1e-10);