ILNumerics - Technical Application Development
Assembly: ILNumerics.Computing (in ILNumerics.Computing.dll) Version: 5.5.0.0 (5.5.7503.3146)
Vector [n] of eigenvalues or a diagonal matrix [n,n] with the eigenvalues on the main diagonal if V is not null.
Computes eigenvalues and eigenvectors (optional) of symmetric/hermitian inputs A and B: A*V=lamda*B*V.
[ILNumerics Computing Engine]
Namespace: ILNumerics
Assembly: ILNumerics.Computing (in ILNumerics.Computing.dll) Version: 5.5.0.0 (5.5.7503.3146)
Syntax
public static RetArray<double> eigGen( InArray<double> A, InArray<double> B, OutArray<double> V = null, GenEigenType type = GenEigenType.Ax_eq_lambBx, bool skipSymmCheck = false )
Parameters
- A
- Type: ILNumericsInArrayDouble
Square, symmetric/hermitian input matrix, size [n x n]. - B
- Type: ILNumericsInArrayDouble
Square, symmetric/hermitian and positive definite matrix, size [n x n]. - V (Optional)
- Type: ILNumericsOutArrayDouble
[Output, optional] Returns the eigenvectors in columns (size [n x n]). Default: (null) eigenvectors are not returned. - type (Optional)
- Type: ILNumericsGenEigenType
[Optional] Determines the eigen problem type. Default: (null) Ax_eq_lambBx: A*V = r*B*V. - skipSymmCheck (Optional)
- Type: SystemBoolean
[Optional] true: skip tests for A and B being hermitian. Default: false.
Return Value
Type: RetArrayDoubleVector [n] of eigenvalues or a diagonal matrix [n,n] with the eigenvalues on the main diagonal if V is not null.
Exceptions
Exception | Condition |
---|---|
ArgumentException | if B was not positive definite, if A and B was not of the same size, if either A and/or B was found not to be symmetric/hermitian, or if the algorithm did not converge. All exceptions will give additional error details in their exception message. |
Remarks
This function solves the generalized eigenproblem A*V=lamda*B*V or the problem as specified by type.
Eigenvectors in V are not normalized! See details about the normalization performed by the underlying Lapack routines.
Internally, the generalized eigenproblem A*V = r*B*V will be reduced to B-1*A*V = r*V using cholesky factorization. The computations are handled by LAPACK functions DSYGV,SSYGV,CHEGV and ZHEGV respectively.
[ILNumerics Computing Engine]
See Also
Reference
MathInternal.eigSymm(InArrayDouble)
MathInternal.eig(InArrayDouble, OutArraycomplex, MatrixProperties, Boolean)
MathInternal.chol(InArrayDouble, Boolean)