Algorithm 530: An Algorithm for Computing the Eigensystem of Skew-Symmetric Matrices and a Class of Symmetric Matrices [F2]
Robert C. Ward, L. J. Gray · ACM Transactions on Mathematical Software · 1978
The set of Fortran subroutines given here is an implementation of the algorithm [3] for finding the eigenvectors x and eigenvalues )~ such that A x = hx, where'A is a real skew-symmetric matrix or a real tridiagonal symmetric matrix with a constant diagonal.The algorithm uses only orthogonal similarity transformations and is believed to be the most efficient procedure available for computing all the eigenvalues or the complete eigensystem for the indicated classes of matrices.The three subroutines of the algorithm and their functions are described as follows:TRIZD.A subroutine that transforms an arbitrary real skew-symmetric matrix to skew-symmetric tridiagonal form using orthogonal similarity transformations, saving the pertinent information about these transformations.IMZD.A subroutine that computes the eigenvalues and, optionally, the eigenvectors of a symmetric tridiagonal matrix with zeros on the diagonal or of a skewsymmetric tridiagonal matrix.TBAKZD.A subroutine that computes the eigenvectors of an arbitrary real skew-symmetric matrix by back-transforming the eigenvectors of the corresponding skew-symmetric tridiagonal matrix determined by TRIZD.Subroutines TRIZD and TBAKZD are straightforward adaptations of Fortran subroutines TRED1 and TRBAK1 [2] {originally published as Algol procedures in [1]) which accomplish similar functions for arbitrary real symmetric matrices.A detailed description of subroutine IMZD is given by Ward and Gray [3].To determine the complete eigensystem of a full skew-symmetric matrix, the user should issue a call to TRIZD, IMZD, and TBAKZD, in that order.If only the eigenvalues are desired, then calling TBAKZD is unnecessary.To determine