GVCCG

Computes all of the eigenvalues and eigenvectors of a generalized complex eigensystem Az = lBz.

Required Arguments

A — Complex matrix of order N.   (Input)

B — Complex matrix of order N.   (Input)

ALPHA — Complex vector of length N. Ultimately, alpha(i)/betav(i) (for i = 1, …, n), will be the eigenvalues of the system in decreasing order of magnitude.   (Output)

BETAV — Complex vector of length N.   (Output)

EVEC — Complex matrix of order N.   (Output)
The J-th eigenvector, corresponding to ALPHA(J)/BETAV(J), is stored in the J-th column. Each vector is normalized to have Euclidean length equal to the value one.

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 of the calling program.   (Input)
Default: LDA = size (A,1).

LDB — Leading dimension of B exactly as specified in the dimension statement of the calling program.   (Input)
Default: LDB = size (B,1).

LDEVEC — Leading dimension of EVEC exactly as specified in the dimension statement of the calling program.   (Input)
Default: LDEVEC = size (EVEC,1).

FORTRAN 90 Interface

Generic:          CALL GVCCG (A, B, ALPHA, BETAV, EVEC [,…])

Specific:         The specific interface names are S_GVCCG and D_GVCCG.

FORTRAN 77 Interface

Single:            CALL GVCCG (N, A, LDA, B, LDB, ALPHA, BETAV, EVEC, LDEVEC)

Double:          The double precision name is DGVCCG.

Description

Routine GVCCG computes the eigenvalues and eigenvectors of the generalized eigensystem Ax = lBx. Here, A and B, are complex matrices of order n. The eigenvalues for this problem can be infinite; so instead of returning l, GVCCG returns α and β. If β is nonzero, then l = α/β.

The routine GVCCG uses the QZ algorithm described by Moler and Stewart (1973). The implementation is based on routines of Garbow (1978). Some timing results are given in Hanson et al. (1990).

Comments

1.         Workspace may be explicitly provided, if desired, by use of G6CCG/DG6CCG. The reference is:

CALL G6CCG (N, A, LDA, B, LDB, ALPHA, BETAV, EVEC, LDEVEC, ACOPY, BCOPY, CWK, WK, IWK)

The additional arguments are as follows:

ACOPY — Complex work array of length N2. A and ACOPY may be the same in which case the first N2 elements of A will be destroyed.

BCOPY — Complex work array of length N2. B and BCOPY may be the same in which case the first N2 elements of B will be destroyed.

CWK — Complex work array of length N.

WK — Real work array of length N.

IWK — Integer work array of length N.

2.         Informational error

Type   Code

4           1                  The iteration for an eigenvalue failed to converge.

3.         The success of this routine can be checked using GPICG.

Example

In this example, DATA statements are used to set A and B. The eigenvalues and eigenvectors are computed and printed. The performance index is also computed and printed. This serves as a check on the computations. For more details, see routine GPICG.

 

      USE IMSL_LIBRARIES

 

      IMPLICIT   NONE

      INTEGER    LDA, LDB, LDEVEC, N

      PARAMETER  (N=3, LDA=N, LDB=N, LDEVEC=N)

!

      INTEGER    I, NOUT

      REAL       PI

      COMPLEX    A(LDA,N), ALPHA(N), B(LDB,N), BETAV(N), EVAL(N), &

                EVEC(LDEVEC,N)

!

!                                 Define values of A and B

!                                 A = (  1+0i   0.5+i   0+5i   )

!                                     (-10+0i     2+i   0+0i   )

!                                     (  5+i     1+0i   0.5+3i )

!

!                                 B = ( 0.5+0i     0+0i  0+0i  )

!                                     (   3+3i     3+3i   0+i  )

!                                     (   4+2i    0.5+i   1+i  )

!

!                                 Declare variables

      DATA A/(1.0,0.0), (-10.0,0.0), (5.0,1.0), (0.5,1.0), (2.0,1.0), &

          (1.0,0.0), (0.0,5.0), (0.0,0.0), (0.5,3.0)/

      DATA B/(0.5,0.0), (3.0,3.0), (4.0,2.0), (0.0,0.0), (3.0,3.0), &

          (0.5,1.0), (0.0,0.0), (0.0,1.0), (1.0,1.0)/

!                                 Compute eigenvalues

      CALL GVCCG (A, B, ALPHA, BETAV, EVEC)

 

                        EVAL = ALPHA/BETAV

!                                 Compute performance index

      PI = GPICG(N,A,B,ALPHA,BETAV,EVEC)

!                                 Print results

      CALL UMACH (2, NOUT)

      CALL WRCRN ('EVAL', EVAL, 1, N, 1)

      CALL WRCRN ('EVEC', EVEC)

      WRITE (NOUT, '(/,A,F6.3)') ' Performance index = ', PI

      END

Output

                       EVAL

               1                2                3

 ( -8.18,-25.38)  (  2.18,  0.61)  (  0.12, -0.39)

                            EVEC

                    1                  2                  3

 1  (-0.3267,-0.1245)  (-0.3007,-0.2444)  ( 0.0371, 0.1518)

 2  ( 0.1767, 0.0054)  ( 0.8959, 0.0000)  ( 0.9577, 0.0000)

 3  ( 0.9201, 0.0000)  (-0.2019, 0.0801)  (-0.2215, 0.0968)

 

 Performance index =  0.709


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