Computes all of the eigenvalues of the generalized real symmetric eigenvalue problem Az = lBz, with B symmetric positive definite.
A — Real symmetric matrix of order N. (Input)
B — Positive definite symmetric matrix of order N. (Input)
EVAL — Vector of length N containing the eigenvalues in decreasing order of magnitude. (Output)
N — Order of the
matrices A and
B.
(Input)
Default: N = size
(A,2).
LDA — Leading
dimension of A
exactly as specified in the dimension statement in the calling
program. (Input)
Default: LDA = size
(A,1).
LDB — Leading
dimension of B
exactly as specified in the dimension statement in the calling
program. (Input)
Default: LDB = size
(B,1).
Generic: CALL GVLSP (A, B, EVAL [,…])
Specific: The specific interface names are S_GVLSP and D_GVLSP.
Single: CALL GVLSP (N, A, LDA, B, LDB, EVAL)
Double: The double precision name is DGVLSP.
Routine GVLSP computes the eigenvalues of Ax = lBx with A symmetric and B symmetric positive definite. The Cholesky factorization B = RT R, with R a triangular matrix, is used to transform the equation Ax = lBx to
(R-T AR-1)(Rx) = l (Rx)
The eigenvalues of C = R-T AR-1 are then computed. This development is found in Martin and Wilkinson (1968). The Cholesky factorization of B is computed based on IMSL routine LFTDS, (see Chapter 1, Linear Systems). The eigenvalues of C are computed based on routine EVLSF. Further discussion and some timing results are given Hanson et al. (1990).
1. Workspace may be explicitly provided, if desired, by use of G3LSP/DG3LSP. The reference is:
CALL G3LSP (N, A, LDA, B, LDB, EVAL, IWK, WK1, WK2)
The additional arguments are as follows:
IWK — Integer work array of length N.
WK1 — Work array of length 2N.
WK2 — Work array of length N2 + N.
2. Informational errors
Type Code
4 1 The iteration for an eigenvalue failed to converge.
4 2 Matrix B is not positive definite.
In this example, a DATA statement is used to set the matrices A and B. The eigenvalues of the system are computed and printed.
USE GVLSP_INT
USE WRRRN_INT
IMPLICIT NONE
! Declare variables
INTEGER LDA, LDB, N
PARAMETER (N=3, LDA=N, LDB=N)
!
REAL A(LDA,N), B(LDB,N), EVAL(N)
! Define values of A:
! A = ( 2 3 5 )
! ( 3 2 4 )
! ( 5 4 2 )
DATA A/2.0, 3.0, 5.0, 3.0, 2.0, 4.0, 5.0, 4.0, 2.0/
!
! Define values of B:
! B = ( 3 1 0 )
! ( 1 2 1 )
! ( 0 1 1 )
DATA B/3.0, 1.0, 0.0, 1.0, 2.0, 1.0, 0.0, 1.0, 1.0/
!
! Find eigenvalues
CALL GVLSP (A, B, EVAL)
! Print results
CALL WRRRN ('EVAL', EVAL, 1, N, 1)
END
EVAL
1 2 3
-4.717 4.393 -0.676
Visual Numerics, Inc. PHONE: 713.784.3131 FAX:713.781.9260 |