Algorithm 538: Eigenvectors and Eigenvalues of Real Generalized Symmetric Matrices by Simultaneous Iteration [F2]
Paul J. Nikolai · ACM Transactions on Mathematical Software · 1979
The program presented here is an implementation of the simultaneous iteration algorithm [2] for calculating the eigenvalues largest in magnitude and corresponding eigenvectors of a real matrix symmetric relative to a prescribed inner product.Let ip(n, w, z) denote an inner product in the space of real column n-tuples and let the real n-square matrix C satisfy ip(n, Cw, z) = ip(n, w, Cz).Then C is symmetric relative to ip, and if the n-square positive definite matrix B satisfies ip(n, w, z) = wWBz then C is B-symmetric.The equation BC = CTB characterizes the B-symmetry of C. Given an optional set ofp initial approximate eigenvectors of a real n-square B-symmetric matrix C corresponding to p eigenvalues of C largest in magnitude, the program calculates em eigenvalues and em corresponding eigenvectors, 0em < p <-n, to a precision dependent on the structure of C and on a prescribed tolerance eps.The matrix B is presented to the program as an independently prepared real function subprogram which calculates ip(n, w, z) = wWBz given column n-vectors w and z.The matrix C is presented as an independently prepared subroutine subprogram op(n, z, w) which when given an n-vector z computes its image w ffi Cz.The program is an outgrowth of a literal Fortran translation [5] of the Algol procedure ritzit [8] to which it is substantially equivalent when C --C T and ip(n, w, z) ffi wTz, the standard inner product.But depending on the choice of B and C, the present program enables the direct treatment of a wide variety of symmetric eigenproblems.