Trait GeneralisedEigenvalueSolvable

Source
pub trait GeneralisedEigenvalueSolvable {
    type NumType;
    type RealType;

    // Required methods
    fn solve_generalised_eigenvalue_problem_with_canonical_orthogonalisation(
        &self,
        complex_symmetric: bool,
        thresh_offdiag: Self::RealType,
        thresh_zeroov: Self::RealType,
        eigenvalue_comparison_mode: EigenvalueComparisonMode,
    ) -> Result<GeneralisedEigenvalueResult<Self::NumType>, Error>;
    fn solve_generalised_eigenvalue_problem_with_ggev(
        &self,
        complex_symmetric: bool,
        thresh_offdiag: Self::RealType,
        thresh_zeroov: Self::RealType,
        eigenvalue_comparison_mode: EigenvalueComparisonMode,
    ) -> Result<GeneralisedEigenvalueResult<Self::NumType>, Error>;
}
Expand description

Trait to solve the generalised eigenvalue equation for a pair of square matrices $\mathbf{A}$ and $\mathbf{B}$:

    \mathbf{A} \mathbf{v} = \lambda \mathbf{B} \mathbf{v},

where $\mathbf{A}$ and $\mathbf{B}$ are in general non-Hermitian and non-positive-definite.

Required Associated Types§

Source

type NumType

Numerical type of the matrix elements constituting the generalised eigenvalue problem.

Source

type RealType

Numerical type of the various thresholds for comparison.

Required Methods§

Source

fn solve_generalised_eigenvalue_problem_with_canonical_orthogonalisation( &self, complex_symmetric: bool, thresh_offdiag: Self::RealType, thresh_zeroov: Self::RealType, eigenvalue_comparison_mode: EigenvalueComparisonMode, ) -> Result<GeneralisedEigenvalueResult<Self::NumType>, Error>

Solves the auxiliary generalised eigenvalue problem

    \tilde{\mathbf{A}} \tilde{\mathbf{v}} = \tilde{\lambda} \tilde{\mathbf{B}} \tilde{\mathbf{v}},

where $\tilde{\mathbf{B}}$ is the canonical-orthogonalised version of $\mathbf{B}$. If $\mathbf{B}$ is not of full rank, then the two eigenvalue problems are different.

§Arguments
  • complex_symmetric - Boolean indicating whether the provided pair of matrices are complex-symmetric.
  • thresh_offdiag - Threshold for checking if any off-diagonal elements are non-zero when verifying orthogonality.
  • thresh_zeroov - Threshold for determining zero eigenvalues of $\mathbf{B}$.
  • eigenvalue_comparison_mode - Comparison mode for sorting eigenvalues and their corresponding eigenvectors.
§Returns

The generalised eigenvalue result.

Source

fn solve_generalised_eigenvalue_problem_with_ggev( &self, complex_symmetric: bool, thresh_offdiag: Self::RealType, thresh_zeroov: Self::RealType, eigenvalue_comparison_mode: EigenvalueComparisonMode, ) -> Result<GeneralisedEigenvalueResult<Self::NumType>, Error>

Solves the generalised eigenvalue problem using LAPACK’s ?ggev generalised eigensolver.

Note that this can be numerically unstable if $\mathbf{B}$ is not of full rank.

§Arguments
  • complex_symmetric - Boolean indicating whether the provided pair of matrices are complex-symmetric.
  • thresh_offdiag - Threshold for checking if any off-diagonal elements are non-zero when verifying orthogonality.
  • thresh_zeroov - Threshold for determining zero eigenvalues of $\mathbf{B}$.
  • eigenvalue_comparison_mode - Comparison mode for sorting eigenvalues and their corresponding eigenvectors.
§Returns

The generalised eigenvalue result.

Implementations on Foreign Types§

Source§

impl GeneralisedEigenvalueSolvable for (&ArrayView2<'_, f32>, &ArrayView2<'_, f32>)

Source§

impl GeneralisedEigenvalueSolvable for (&ArrayView2<'_, f64>, &ArrayView2<'_, f64>)

Source§

impl<T> GeneralisedEigenvalueSolvable for (&ArrayView2<'_, Complex<T>>, &ArrayView2<'_, Complex<T>>)
where T: Float + FloatConst + Scalar<Complex = Complex<T>>, Complex<T>: ComplexFloat<Real = T> + Scalar<Real = T, Complex = Complex<T>> + Lapack, for<'a> ArrayView2<'a, Complex<T>>: CanonicalOrthogonalisable<NumType = Complex<T>, RealType = T>,

Source§

type NumType = Complex<T>

Source§

type RealType = T

Source§

fn solve_generalised_eigenvalue_problem_with_canonical_orthogonalisation( &self, complex_symmetric: bool, thresh_offdiag: T, thresh_zeroov: T, eigenvalue_comparison_mode: EigenvalueComparisonMode, ) -> Result<GeneralisedEigenvalueResult<Complex<T>>, Error>

Source§

fn solve_generalised_eigenvalue_problem_with_ggev( &self, complex_symmetric: bool, thresh_offdiag: T, thresh_zeroov: T, eigenvalue_comparison_mode: EigenvalueComparisonMode, ) -> Result<GeneralisedEigenvalueResult<Self::NumType>, Error>

Implementors§