|
IDL Analyst Reference Guide: Eigensystem Analysis |
|
The IMSL_EIGSYMGEN function computes the generalized eigenexpansion of a system Ax = lBx. The matrices A and B are real and symmetric, and B is positive definite.
| Note This routine requires an IDL Analyst license. For more information, contact your ITT Visual Information Solutions sales or technical support representative. |
Result = IMSL_EIGSYMGEN(a, b [, /DOUBLE] [, VECTORS=array])
One-dimensional array containing the eigenvalues of the symmetric matrix.
Two-dimensional matrix containing symmetric coefficient matrix A.
Two-dimensional matrix containing the positive definite symmetric coefficient matrix B.
If present and nonzero, double precision is used.
Compute eigenvectors of the problem. A two-dimensional array containing the eigenvectors is returned in the variable name specified by VECTORS.
The IMSL_EIGSYMGEN function computes the eigenvalues of a symmetric, positive definite eigenvalue problem by a three-phase process (Martin and Wilkinson 1971). Matrix B is reduced to factored form using the Cholesky decomposition. These factors are used to form a congruence transformation that yields a symmetric real matrix whose eigenexpansion is obtained. The problem is then transformed back to the original coordinates. Eigenvectors are calculated and transformed as required.
This example computes the generalized eigenexpansion of a system Ax = lBx, where A and B are 3-by-3 matrices.
RM, a, 3, 3 ; Define the matrix A. row 0: 1.1 1.2 1.4 row 1: 1.2 1.3 1.5 row 2: 1.4 1.5 1.6 RM, b, 3, 3 ; Define the matrix B. row 0: 2 1 0 row 1: 1 2 1 row 2: 0 1 2 eigval = IMSL_EIGSYMGEN(a, b) ; Call IMSL_EIGSYMGEN to compute the eigenexpansion. PM, eigval, Title = 'Eigenvalues' ; Output the results. Eigenvalues 1.38644 -0.0583479 -0.00309042
This example is a variation of the first example. It computes the eigenvectors as well as the eigenvalues.
RM, a, 3, 3 ; Define the matrix A. row 0: 1.1 1.2 1.4 row 1: 1.2 1.3 1.5 row 2: 1.4 1.5 1.6 RM, b, 3, 3 ; Define the matrix B. row 0: 2 1 0 row 1: 1 2 1 row 2: 0 1 2 eigval = IMSL_EIGSYMGEN(a, b, Vectors = eigvec) ; Call IMSL_EIGSYMGEN with keyword Vectors to specify the named ; variable in which the vectors are stored. PM, eigval, Title = 'Eigenvalues' ; Output the eigenvalues. Eigenvalues 1.38644 -0.0583478 -0.00309040 PM, eigvec, Title = 'Eigenvectors' ; Output the eigenvectors. Eigenvectors 0.643094 -0.114730 -0.681688 -0.0223849 -0.687186 0.726597 0.765460 0.717365 -0.0857800
MATH_SLOW_CONVERGENCE_SYM—Iteration for an eigenvalue failed to converge in 100 iterations before deflating.
MATH_SUBMATRIX_NOT_POS_DEFINITE—Leading submatrix of the input matrix is not positive definite.
MATH_MATRIX_B_NOT_POS_DEFINITE—Matrix B is not positive definite.
IDL Online Help (March 06, 2007)