Previous: bandr Up: ../eispad.html Next: bisect
SUBROUTINE BANDV(NM,N,MBW,A,E21,M,W,Z,IERR,NV,RV,RV6) C INTEGER I,J,K,M,N,R,II,IJ,JJ,KJ,MB,M1,NM,NV,IJ1,ITS,KJ1,MBW,M21, X IERR,MAXJ,MAXK,GROUP DOUBLE PRECISION A(NM,MBW),W(M),Z(NM,M),RV(NV),RV6(N) DOUBLE PRECISION U,V,UK,XU,X0,X1,E21,EPS2,EPS3,EPS4,NORM,ORDER, X EPSLON,PYTHAG C C THIS SUBROUTINE FINDS THOSE EIGENVECTORS OF A REAL SYMMETRIC C BAND MATRIX CORRESPONDING TO SPECIFIED EIGENVALUES, USING INVERSE C ITERATION. THE SUBROUTINE MAY ALSO BE USED TO SOLVE SYSTEMS C OF LINEAR EQUATIONS WITH A SYMMETRIC OR NON-SYMMETRIC BAND C COEFFICIENT MATRIX. C C ON INPUT C C NM MUST BE SET TO THE ROW DIMENSION OF TWO-DIMENSIONAL C ARRAY PARAMETERS AS DECLARED IN THE CALLING PROGRAM C DIMENSION STATEMENT. C C N IS THE ORDER OF THE MATRIX. C C MBW IS THE NUMBER OF COLUMNS OF THE ARRAY A USED TO STORE THE C BAND MATRIX. IF THE MATRIX IS SYMMETRIC, MBW IS ITS (HALF) C BAND WIDTH, DENOTED MB AND DEFINED AS THE NUMBER OF ADJACENT C DIAGONALS, INCLUDING THE PRINCIPAL DIAGONAL, REQUIRED TO C SPECIFY THE NON-ZERO PORTION OF THE LOWER TRIANGLE OF THE C MATRIX. IF THE SUBROUTINE IS BEING USED TO SOLVE SYSTEMS C OF LINEAR EQUATIONS AND THE COEFFICIENT MATRIX IS NOT C SYMMETRIC, IT MUST HOWEVER HAVE THE SAME NUMBER OF ADJACENT C DIAGONALS ABOVE THE MAIN DIAGONAL AS BELOW, AND IN THIS C CASE, MBW=2*MB-1. C C A CONTAINS THE LOWER TRIANGLE OF THE SYMMETRIC BAND INPUT C MATRIX STORED AS AN N BY MB ARRAY. ITS LOWEST SUBDIAGONAL C IS STORED IN THE LAST N+1-MB POSITIONS OF THE FIRST COLUMN, C ITS NEXT SUBDIAGONAL IN THE LAST N+2-MB POSITIONS OF THE C SECOND COLUMN, FURTHER SUBDIAGONALS SIMILARLY, AND FINALLY C ITS PRINCIPAL DIAGONAL IN THE N POSITIONS OF COLUMN MB. C IF THE SUBROUTINE IS BEING USED TO SOLVE SYSTEMS OF LINEAR C EQUATIONS AND THE COEFFICIENT MATRIX IS NOT SYMMETRIC, A IS C N BY 2*MB-1 INSTEAD WITH LOWER TRIANGLE AS ABOVE AND WITH C ITS FIRST SUPERDIAGONAL STORED IN THE FIRST N-1 POSITIONS OF C COLUMN MB+1, ITS SECOND SUPERDIAGONAL IN THE FIRST N-2 C POSITIONS OF COLUMN MB+2, FURTHER SUPERDIAGONALS SIMILARLY, C AND FINALLY ITS HIGHEST SUPERDIAGONAL IN THE FIRST N+1-MB C POSITIONS OF THE LAST COLUMN. C CONTENTS OF STORAGES NOT PART OF THE MATRIX ARE ARBITRARY. C C E21 SPECIFIES THE ORDERING OF THE EIGENVALUES AND CONTAINS C 0.0D0 IF THE EIGENVALUES ARE IN ASCENDING ORDER, OR C 2.0D0 IF THE EIGENVALUES ARE IN DESCENDING ORDER. C IF THE SUBROUTINE IS BEING USED TO SOLVE SYSTEMS OF LINEAR C EQUATIONS, E21 SHOULD BE SET TO 1.0D0 IF THE COEFFICIENT C MATRIX IS SYMMETRIC AND TO -1.0D0 IF NOT. C C M IS THE NUMBER OF SPECIFIED EIGENVALUES OR THE NUMBER OF C SYSTEMS OF LINEAR EQUATIONS. C C W CONTAINS THE M EIGENVALUES IN ASCENDING OR DESCENDING ORDER. C IF THE SUBROUTINE IS BEING USED TO SOLVE SYSTEMS OF LINEAR C EQUATIONS (A-W(R)*I)*X(R)=B(R), WHERE I IS THE IDENTITY C MATRIX, W(R) SHOULD BE SET ACCORDINGLY, FOR R=1,2,...,M. C C Z CONTAINS THE CONSTANT MATRIX COLUMNS (B(R),R=1,2,...,M), IF C THE SUBROUTINE IS USED TO SOLVE SYSTEMS OF LINEAR EQUATIONS. C C NV MUST BE SET TO THE DIMENSION OF THE ARRAY PARAMETER RV C AS DECLARED IN THE CALLING PROGRAM DIMENSION STATEMENT. C C ON OUTPUT C C A AND W ARE UNALTERED. C C Z CONTAINS THE ASSOCIATED SET OF ORTHOGONAL EIGENVECTORS. C ANY VECTOR WHICH FAILS TO CONVERGE IS SET TO ZERO. IF THE C SUBROUTINE IS USED TO SOLVE SYSTEMS OF LINEAR EQUATIONS, C Z CONTAINS THE SOLUTION MATRIX COLUMNS (X(R),R=1,2,...,M). C C IERR IS SET TO C ZERO FOR NORMAL RETURN, C -R IF THE EIGENVECTOR CORRESPONDING TO THE R-TH C EIGENVALUE FAILS TO CONVERGE, OR IF THE R-TH C SYSTEM OF LINEAR EQUATIONS IS NEARLY SINGULAR. C C RV AND RV6 ARE TEMPORARY STORAGE ARRAYS. NOTE THAT RV IS C OF DIMENSION AT LEAST N*(2*MB-1). IF THE SUBROUTINE C IS BEING USED TO SOLVE SYSTEMS OF LINEAR EQUATIONS, THE C DETERMINANT (UP TO SIGN) OF A-W(M)*I IS AVAILABLE, UPON C RETURN, AS THE PRODUCT OF THE FIRST N ELEMENTS OF RV. C C CALLS PYTHAG FOR DSQRT(A*A + B*B) . C C QUESTIONS AND COMMENTS SHOULD BE DIRECTED TO BURTON S. GARBOW, C MATHEMATICS AND COMPUTER SCIENCE DIV, ARGONNE NATIONAL LABORATORY C C THIS VERSION DATED AUGUST 1983. C C ------------------------------------------------------------------ C