EVBSB

Computes the eigenvalues in a given interval of a real symmetric matrix stored in band symmetric storage mode.

Required Arguments

MXEVAL — Maximum number of eigenvalues to be computed. (Input)

A — Band symmetric matrix of order N. (Input)

NCODA — Number of codiagonals in A. (Input)

ELOW — Lower limit of the interval in which the eigenvalues are sought. (Input)

EHIGH — Upper limit of the interval in which the eigenvalues are sought. (Input)

NEVAL — Number of eigenvalues found. (Output)

EVAL — Real vector of length MXEVAL containing the eigenvalues of A in the interval (ELOW, EHIGH) in decreasing order of magnitude. (Output)

Only the first NEVAL elements of EVAL are set.

Only the first NEVAL elements of EVAL are set.

Optional Arguments

N — Order of the matrix A. (Input)

Default: N = SIZE (A,2).

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

Default: LDA = SIZE (A,1).

FORTRAN 90 Interface

Generic: CALL EVBSB (MXEVAL, A, NCODA, ELOW, EHIGH, NEVAL, EVAL [,…])

Specific: The specific interface names are S_EVBSB and D_EVBSB.

FORTRAN 77 Interface

Single: CALL EVBSB (N, MXEVAL, A, LDA, NCODA, ELOW, EHIGH, NEVAL, EVAL)

Double: The double precision name is DEVBSB.

Description

Routine EVBSB computes the eigenvalues in a given range of a real band symmetric matrix. Orthogonal similarity transformations are used to reduce the matrix to an equivalent symmetric tridiagonal matrix. A bisection algorithm is used to compute the eigenvalues of the tridiagonal matrix in a given range.

The reduction routine is based on the EISPACK routine BANDR; see Garbow et al. (1977). The bisection routine is based on the EISPACK routine BISECT; see Smith et al. (1976).

Comments

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

CALL E3BSB (N, MXEVAL, A, LDA, NCODA, ELOW, EHIGH, NEVAL, EVAL, ACOPY, WK)

The additional arguments are as follows:

ACOPY — Work matrix of size NCODA + 1 by N. A and ACOPY may be the same, in which case the first N(NCODA + 1) elements of A will be destroyed.

WK — Work array of length 5N.

2. Informational error

Type | Code | Description |
---|---|---|

3 | 1 | The number of eigenvalues in the specified interval exceeds MXEVAL. NEVAL contains the number of eigenvalues in the interval. No eigenvalues will be returned. |

Example

In this example, a DATA statement is used to set A to a matrix given by Gregory and Karney (1969, page 77). The eigenvalues in the range (-2.5, 1.5) are computed and printed. As a test, this example uses MXEVAL = 5. The routine EVBSB computes NEVAL, the number of eigenvalues in the given range, has the value 3.

USE EVBSB_INT

USE UMACH_INT

USE WRRRN_INT

IMPLICIT NONE

! Declare variables

INTEGER LDA, MXEVAL, N, NCODA

PARAMETER (MXEVAL=5, N=5, NCODA=2, LDA=NCODA+1)

!

INTEGER NEVAL, NOUT

REAL A(LDA,N), EHIGH, ELOW, EVAL(MXEVAL)

!

! Define values of A:

! A = ( -1 2 1 )

! ( 2 0 2 1 )

! ( 1 2 0 2 1 )

! ( 1 2 0 2 )

! ( 1 2 -1 )

! Representedin band symmetric

! form this is:

! A = ( 0 0 1 1 1 )

! ( 0 2 2 2 2 )

! ( -1 0 0 0 -1 )

DATA A/0.0, 0.0, -1.0, 0.0, 2.0, 0.0, 1.0, 2.0, 0.0, 1.0, 2.0, &

0.0, 1.0, 2.0, -1.0/

!

ELOW = -2.5

EHIGH = 1.5

CALL EVBSB (MXEVAL, A, NCODA, ELOW, EHIGH, NEVAL, EVAL)

! Print results

CALL UMACH (2, NOUT)

WRITE (NOUT,'(/,A,I1)') ' NEVAL = ', NEVAL

CALL WRRRN ('EVAL', EVAL, 1, NEVAl, 1)

END

Output

NEVAL = 3

EVAL

1 2 3

-2.464 -2.000 1.000