BQR, SBQR - EISPACK routine. This subroutine finds the eigenvalue
of smallest (usually) magnitude of a REAL SYMMETRIC BAND matrix using the
QR algorithm with shifts of origin. Consecutive calls can be made to
find further eigenvalues.
subroutine bqr(nm, n, mb, a, t, r, ierr, nv, rv)
integer nm, n, mb, ierr, nv
double precision t, r
double precision a(nm,mb), rv(nv)
subroutine sbqr(nm, n, mb, a, t, r, ierr, nv, rv)
integer nm, n, mb, ierr, nv
real t, r
real a(nm,mb), rv(nv)
NM must be set to the row dimension of two-dimensional array parameters
as declared in the calling program dimension statement.
N is the order of the matrix.
MB is the (half) band width of the matrix, defined as the number of
adjacent diagonals, including the principal diagonal, required to specify
the non-zero portion of the lower triangle of the matrix.
A contains the lower triangle of the symmetric band input matrix stored
as an N by MB array. Its lowest subdiagonal is stored in the last N+1-MB
positions of the first column, its next subdiagonal in the last N+2-MB
positions of the second column, further subdiagonals similarly, and
finally its principal diagonal in the N positions of the last column.
Contents of storages not part of the matrix are arbitrary. On a
subsequent call, its output contents from the previous call should be
T specifies the shift (of eigenvalues) applied to the diagonal of A in
forming the input matrix. What is actually determined is the eigenvalue
of A+TI (I is the identity matrix) nearest to T. On a subsequent call,
the output value of T from the previous call should be passed if the next
nearest eigenvalue is sought.
R should be specified as zero on the first call, and as its output value
from the previous call on a subsequent call. It is used to determine
when the last row and column of the transformed band matrix can be
regarded as negligible.
NV must be set to the dimension of the array parameter RV as declared in
the calling program dimension statement. On OUTPUT
A contains the transformed band matrix. The matrix A+TI derived from the
output parameters is similar to the input A+TI to within rounding errors.
Its last row and column are null (if IERR is zero).
T contains the computed eigenvalue of A+TI (if IERR is zero).
R contains the maximum of its input value and the norm of the last column
of the input matrix A.
IERR is set to Zero for normal return, N if the eigenvalue
has not been
determined after 30 iterations.
RV is a temporary storage array of dimension at least (2*MB**2+4*MB-3).
The first (3*MB-2) locations correspond to the ALGOL array B, the next
(2*MB-1) locations correspond to the ALGOL array H, and the final
(2*MB**2-MB) locations correspond to the MB by (2*MB-1) ALGOL array U.
NOTE. For a subsequent call, N should be replaced by N-1, but
MB should not be altered even when it exceeds the current N. Calls
PYTHAG(A,B) for SQRT(A**2 + B**2). Questions and comments should be
directed to B. S. Garbow, Applied Mathematics Division, ARGONNE NATIONAL
PPPPaaaaggggeeee 2222 [ Back ]