C# Class Accord.Math.Decompositions.JaggedGeneralizedEigenvalueDecomposition

Determines the Generalized eigenvalues and eigenvectors of two real square matrices.

A generalized eigenvalue problem is the problem of finding a vector v that obeys A * v = λ * B * v where A and B are matrices. If v obeys this equation, with some λ, then we call v the generalized eigenvector of A and B, and λ is called the generalized eigenvalue of A and B which corresponds to the generalized eigenvector v. The possible values of λ, must obey the identity det(A - λ*B) = 0.

Part of this code has been adapted from the original EISPACK routines in Fortran.

References: http://en.wikipedia.org/wiki/Generalized_eigenvalue_problem#Generalized_eigenvalue_problem http://www.netlib.org/eispack/

Inheritance: ICloneable
Show file Open project: accord-net/framework Class Usage Examples

Public Methods

Method Description
Clone ( ) : object

Creates a new object that is a copy of the current instance.

JaggedGeneralizedEigenvalueDecomposition ( double a, double b, bool sort = false ) : System

Constructs a new generalized eigenvalue decomposition.

Private Methods

Method Description
JaggedGeneralizedEigenvalueDecomposition ( ) : System
qzhes ( int n, double a, double b, bool matz, double z ) : int

Adaptation of the original Fortran QZHES routine from EISPACK.

This subroutine is the first step of the qz algorithm for solving generalized matrix eigenvalue problems, Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart. This subroutine accepts a pair of real general matrices and reduces one of them to upper Hessenberg form and the other to upper triangular form using orthogonal transformations. it is usually followed by qzit, qzval and, possibly, qzvec. For the full documentation, please check the original function.

qzit ( int n, double a, double b, double eps1, bool matz, double z, int &ierr ) : int

Adaptation of the original Fortran QZIT routine from EISPACK.

This subroutine is the second step of the qz algorithm for solving generalized matrix eigenvalue problems, Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart, as modified in technical note nasa tn d-7305(1973) by ward. This subroutine accepts a pair of real matrices, one of them in upper Hessenberg form and the other in upper triangular form. it reduces the Hessenberg matrix to quasi-triangular form using orthogonal transformations while maintaining the triangular form of the other matrix. it is usually preceded by qzhes and followed by qzval and, possibly, qzvec. For the full documentation, please check the original function.

qzval ( int n, double a, double b, double alfr, double alfi, double beta, bool matz, double z ) : int

Adaptation of the original Fortran QZVAL routine from EISPACK.

This subroutine is the third step of the qz algorithm for solving generalized matrix eigenvalue problems, Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart. This subroutine accepts a pair of real matrices, one of them in quasi-triangular form and the other in upper triangular form. it reduces the quasi-triangular matrix further, so that any remaining 2-by-2 blocks correspond to pairs of complex Eigenvalues, and returns quantities whose ratios give the generalized eigenvalues. it is usually preceded by qzhes and qzit and may be followed by qzvec. For the full documentation, please check the original function.

qzvec ( int n, double a, double b, double alfr, double alfi, double beta, double z ) : int

Adaptation of the original Fortran QZVEC routine from EISPACK.

This subroutine is the optional fourth step of the qz algorithm for solving generalized matrix eigenvalue problems, Siam J. Numer. anal. 10, 241-256(1973) by Moler and Stewart. This subroutine accepts a pair of real matrices, one of them in quasi-triangular form (in which each 2-by-2 block corresponds to a pair of complex eigenvalues) and the other in upper triangular form. It computes the eigenvectors of the triangular problem and transforms the results back to the original coordinate system. it is usually preceded by qzhes, qzit, and qzval. For the full documentation, please check the original function.

Method Details

Clone() public method

Creates a new object that is a copy of the current instance.
public Clone ( ) : object
return object

JaggedGeneralizedEigenvalueDecomposition() public method

Constructs a new generalized eigenvalue decomposition.
public JaggedGeneralizedEigenvalueDecomposition ( double a, double b, bool sort = false ) : System
a double The first matrix of the (A,B) matrix pencil.
b double The second matrix of the (A,B) matrix pencil.
sort bool /// Pass to sort the eigenvalues and eigenvectors at the end /// of the decomposition.
return System