GVLSP

Computes all of the eigenvalues of the generalized real symmetric eigenvalue problem Az = lBz, with B symmetric positive definite.

Required Arguments

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)

Optional Arguments

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).

FORTRAN 90 Interface

Generic:          CALL GVLSP (A, B, EVAL [,…])

Specific:         The specific interface names are S_GVLSP and D_GVLSP.

FORTRAN 77 Interface

Single:            CALL GVLSP (N, A, LDA, B, LDB, EVAL)

Double:          The double precision name is DGVLSP.

Description

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).

Comments

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.

Example

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

Output

          EVAL

      1       2       3

 -4.717   4.393  -0.676


Visual Numerics, Inc.
Visual Numerics - Developers of IMSL and PV-WAVE
http://www.vni.com/
PHONE: 713.784.3131
FAX:713.781.9260