If eigenvectors are desired, an orthonormal basis for the invariant subspace corresponding to the converged Ritz values is first computed. The vectors of this orthonormal basis are called approximate Schur vectors for Figure 5.2 outlines our strategy. Refer to Figure 5.2 for definitions of the quantities discussed in the remainder of this section.
For symmetric eigenvalue problems [s,d]seupd does not need Step 3 of Figure 5.2 since Schur vectors are also eigenvectors. Moreover, a special routine is not required to re-order the Schur form since is a diagonal matrix of real eigenvalues.
For real non-symmetric eigenvalue problems, [s,d]neupd uses the real Schur form. That is, is an upper quasi-triangular matrix with 1-by-1 and 2-by-2 diagonal blocks; each 2-by-2 diagonal block has its diagonal elements equal and its off-diagonal elements of opposite sign. Associated with each 2-by-2 diagonal block is a complex conjugate pair of eigenvalues. The real eigenvalues are stored on the diagonal of Similarly, is a block diagonal matrix. When the eigenvalue is complex, the complex eigenvector associated with the eigenvalue with positive imaginary part is stored in two consecutive columns of The first column holds the real part of the eigenvector and the second column holds the imaginary part. The eigenvector associated with the eigenvalue with negative imaginary part is simply the complex conjugate of the eigenvector associated with the positive imaginary part. The computed Ritz vectors are stored in the same manner.
The computation of the partial Schur form needed at Step 1 is performed by first calling the appropriate LAPACK subroutine that computes the full Schur decomposition of Another LAPACK subroutine, Xtrsen , re-orders the computed Schur form to obtain and The approximate Schur vectors are formed by computing the QR factorization of and then postmultiplying with the factored form. This avoids the need for the additional storage that would be necessary if were computed directly. The appropriate LAPACK subroutines are used to compute and apply the QR factorization of The factored approach described above is extremely stable and efficient since is a numerically orthogonal matrix.
In exact arithmetic, there would be no need to perform the reordering (or the sorting for the symmetric eigenvalue problem). In theory, the implicit restarting mechanism would obviate the need for this. However, computing in finite precision arithmetic (as usual) complicates the issue and make these final reorderings mandatory. See Chapter 5 in [22] and [26] for further information.
When Ritz vectors are required, the LAPACK subroutine Xtrevc is called to compute the decomposition Since is an upper quasi triangular matrix, the product is easily formed using the level 3 BLAS subroutine Xtrmm .
The computed eigenvectors (Ritz vectors) returned by XYeupd are normalized to have unit length with respect to the semi-inner product that was used. Thus, if they will have unit length in the standard 2-norm. In general, a computed eigenvector will satisfy with respect to the matrix that was specified.