Computes all of the eigenvalues of a generalized complex eigensystem Az = lBz.
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)
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 GVLCG (A, B, ALPHA, BETAV [,…])
Specific: The specific interface names are S_GVLCG and D_GVLCG.
Single: CALL GVLCG (N, A, LDA, B, LDB, ALPHA, BETAV)
Double: The double precision name is DGVLCG.
Routine GVLCG computes the eigenvalues of the generalized eigensystem Ax = lBx, where A and B are complex matrices of order n. The eigenvalues for this problem can be infinite; so instead of returning l, GVLCG returns α and β. If β is nonzero, then l = α/β. If the eigenvectors are needed, then use GVCCG.
The underlying code is based on either EISPACK or LAPACK code depending upon which supporting libraries are used during linking. For a detailed explanation, see “Using ScaLAPACK, LAPACK, LINPACK, and EISPACK” in the Introduction section of this manual. Some timing information is given in Hanson et al. (1990).
1. Workspace may be explicitly provided, if desired, by use of G3LCG/DG3LCG. The reference is:
CALL G3LCG (N, A, LDA, B, LDB, ALPHA, BETAV, 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 A will be destroyed.
BCOPY — Complex work array of length N2. B and BCOPY may be the same, in which case 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 the eigenvalues failed to converge.
In this example, DATA statements are used to set A and B. Then, the eigenvalues are computed and printed.
USE GVLCG_INT
USE WRCRN_INT
IMPLICIT NONE
! Declaration of variables
INTEGER LDA, LDB, N
PARAMETER (N=5, LDA=N, LDB=N)
!
INTEGER I
COMPLEX A(LDA,N), ALPHA(N), B(LDB,N), BETAV(N), EVAL(N)
!
! Define values of A and B
!
DATA A/(-238.0,-344.0), (76.0,152.0), (118.0,284.0), &
(-314.0,-160.0), (-54.0,-24.0), (86.0,178.0), &
(-96.0,-128.0), (55.0,-182.0), (132.0,78.0), &
(-205.0,-400.0), (164.0,240.0), (40.0,-32.0), &
(-13.0,460.0), (114.0,296.0), (109.0,148.0), &
(-166.0,-308.0), (60.0,184.0), (34.0,-192.0), &
(-90.0,-164.0), (158.0,312.0), (56.0,158.0), &
(-60.0,-136.0), (-176.0,-214.0), (-424.0,-374.0), &
(-38.0,-96.0)/
DATA B/(388.0,94.0), (-304.0,-76.0), (-658.0,-136.0), &
(-640.0,-10.0), (-162.0,-72.0), (-386.0,-122.0), &
(384.0,64.0), (-73.0,100.0), (204.0,-42.0), (631.0,158.0), &
(-250.0,-14.0), (-160.0,16.0), (-109.0,-250.0), &
(-692.0,-90.0), (131.0,52.0), (556.0,130.0), &
(-240.0,-92.0), (-118.0,100.0), (288.0,66.0), &
(-758.0,-184.0), (-396.0,-62.0), (240.0,68.0), &
(406.0,96.0), (-192.0,154.0), (278.0,76.0)/
!
CALL GVLCG (A, B, ALPHA, BETAV)
! Compute eigenvalues
EVAL = ALPHA/BETAV
! Print results
CALL WRCRN ('EVAL', EVAL, 1, N, 1)
STOP
END
EVAL
1 2 3 4
(-1.000,-1.333) ( 0.765, 0.941) (-0.353, 0.412) (-0.353,-0.412)
5
(-0.353,-0.412)
Visual Numerics, Inc. PHONE: 713.784.3131 FAX:713.781.9260 |