Next: Further Details: Error Bounds Up: Accuracy and Stability Previous: Further Details: Error Bounds Contents Index

#
Error Bounds for the Generalized Symmetric Definite Eigenproblem

There are three types of problems to consider. In all cases A and B are real symmetric (or complex Hermitian) and B is positive definite. These decompositions are computed for real symmetric matrices by the driver routines xSYGV, xSYGVX, xSYGVD, xSPGV, xSPGVX, xSPGVD, and (for type 1 only) xSBGV, xSBGVX and xSBGVD (see subsection 2.3.5.1). These decompositions are computed for complex Hermitian matrices by the driver routines xHEGV, xHEGVX, xHEGVD, xHPGV, xHPGVX, xHPGVD, and (for type 1 only) xHBGV, xHBGVX, xHBGVD (see subsection 2.3.5.1). In each of the following three decompositions, is real and diagonal with diagonal entries , and the columns zi of Z are linearly independent vectors. The are called eigenvalues and the zi are eigenvectors.

1.
  . The eigendecomposition may be written and ZT B Z = I (or and ZH B Z = I if A and B are complex). This may also be written .

2.
  . The eigendecomposition may be written and ZT B Z = I ( and ZH B Z = I if A and B are complex). This may also be written .

3.
  . The eigendecomposition may be written and ZT B-1 Z = I ( and ZH B-1 Z = I if A and B are complex). This may also be written .

The approximate error bounds4.10for the computed eigenvalues are

The approximate error bounds for the computed eigenvectors , which bound the acute angles between the computed eigenvectors and true eigenvectors zi, are

These bounds are computed differently, depending on which of the above three problems are to be solved. The following code fragments show how.

1.
  First we consider error bounds for problem 1.

            EPSMCH = SLAMCH( 'E' )
      *     Solve the eigenproblem A - lambda B (ITYPE = 1)
            ITYPE = 1
      *     Compute the norms of A and B
            ANORM = SLANSY( '1', UPLO, N, A, LDA, WORK )
            BNORM = SLANSY( '1', UPLO, N, B, LDB, WORK )
      *     The eigenvalues are returned in W
      *     The eigenvectors are returned in A
            CALL SSYGV( ITYPE, 'V', UPLO, N, A, LDA, B, LDB, W, WORK,
           $            LWORK, INFO )
            IF( INFO.GT.0 .AND. INFO.LE.N ) THEN
               PRINT *,'SSYGV did not converge'
            ELSE IF( INFO.GT.N ) THEN
               PRINT *,'B not positive definite'
            ELSE IF ( N.GT.0 ) THEN
      *        Get reciprocal condition number RCONDB of Cholesky factor of B
               CALL STRCON( '1', UPLO, 'N', N, B, LDB, RCONDB, WORK, IWORK,
           $                INFO )
               RCONDB = MAX( RCONDB, EPSMCH )
               CALL SDISNA( 'Eigenvectors', N, N, W, RCONDZ, INFO )
               DO 10 I = 1, N
                  EERRBD( I ) = ( EPSMCH / RCONDB**2 ) * ( ANORM / BNORM +
           $                      ABS( W(I) ) )
                  ZERRBD( I ) = ( EPSMCH / RCONDB**3 ) * ( ( ANORM / BNORM )
           $                     / RCONDZ(I) + ( ABS( W(I) ) / RCONDZ(I) ) *
           $                     RCONDB )
      10       CONTINUE
            END IF

  For example4.11, if ,

  then , , and , and the approximate eigenvalues, approximate error bounds, and true errors are

  i |  | `EERRBD`(i) | true | `ZERRBD`(i) | true
  1 | -500.0 |  |  |  |
  2 | 1000. |  |  |  |
  3 | 1010. |  |  |  |

  This code fragment cannot be adapted to use xSBGV (or xHBGV), because xSBGV does not return a conventional Cholesky factor in B, but rather a ``split'' Cholesky factorization (performed by xPBSTF).

2.
  Problem types 2 and 3 have the same error bounds. We illustrate only type 2.

            EPSMCH = SLAMCH( 'E' )
      *     Solve the eigenproblem A*B - lambda I (ITYPE = 2)
            ITYPE = 2
      *     Compute the norms of A and B
            ANORM = SLANSY( '1', UPLO, N, A, LDA, WORK )
            BNORM = SLANSY( '1', UPLO, N, B, LDB, WORK )
      *     The eigenvalues are returned in W
      *     The eigenvectors are returned in A
            CALL SSYGV( ITYPE, 'V', UPLO, N, A, LDA, B, LDB, W, WORK,
           $            LWORK, INFO )
            IF( INFO.GT.0 .AND. INFO.LE.N ) THEN
               PRINT *,'SSYGV did not converge'
            ELSE IF( INFO.GT.N ) THEN
               PRINT *,'B not positive definite'
            ELSE IF ( N.GT.0 ) THEN
      *        Get reciprocal condition number RCONDB of Cholesky factor of B
               CALL STRCON( '1', UPLO, 'N', N, B, LDB, RCONDB, WORK, IWORK,
           $                INFO )
               RCONDB = MAX( RCONDB, EPSMCH )
               CALL SDISNA( 'Eigenvectors', N, N, W, RCONDZ, INFO )
               DO 10 I = 1, N
                  EERRBD(I) = ( ANORM * BNORM ) * EPSMCH +
           $                  ( EPSMCH / RCONDB**2 ) * ABS( W(I) )
                  ZERRBD(I) = ( EPSMCH / RCONDB ) * ( ( ANORM * BNORM ) /
           $                    RCONDZ(I) + 1.0 / RCONDB )
      10       CONTINUE
            END IF

  For the same A and B as above, the approximate eigenvalues, approximate error bounds, and true errors are

  i |  | `EERRBD`(i) | true | `ZERRBD`(i) | true
  1 |  | 1.3 |  |  |
  2 |  | 1.6 | 1.5 |  |
  3 |  | 1.9 | 4.5 |  |

- Further Details: Error Bounds for the Generalized Symmetric Definite Eigenproblem

Next: Further Details: Error Bounds Up: Accuracy and Stability Previous: Further Details: Error Bounds Contents Index