next up previous contents index
Next: Troubleshooting Up: Accuracy and Stability Previous: Further Details: Error Bounds

Error Bounds for the Generalized Symmetric Definite Eigenproblem

 

Three types of problems must be considered.   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 PxSYGVX (see section 3.2.4). These decompositions are computed for complex Hermitian matrices by the driver routines PxHEGVX (see subsection 3.2.4). In each of the following three decompositions, tex2html_wrap_inline12784 is real and diagonal with diagonal entries tex2html_wrap_inline19079, and the columns tex2html_wrap_inline18630 of Z are linearly independent vectors. The tex2html_wrap_inline18626 are called eigenvalues and the tex2html_wrap_inline18630 are eigenvectors.     

  1. tex2html_wrap_inline18087. The eigendecomposition may be written tex2html_wrap_inline12895 and tex2html_wrap_inline12903 (or tex2html_wrap_inline12913 and tex2html_wrap_inline12921 if A and B are complex). This may also be written tex2html_wrap_inline19103.
  2. tex2html_wrap_inline18089. The eigendecomposition may be written tex2html_wrap_inline19107 and tex2html_wrap_inline12903 (tex2html_wrap_inline19111 and tex2html_wrap_inline12921 if A and B are complex). This may also be written tex2html_wrap_inline19119.
  3. tex2html_wrap_inline18091. The eigendecomposition may be written tex2html_wrap_inline12895 and tex2html_wrap_inline12905 (tex2html_wrap_inline12913 and tex2html_wrap_inline12923 if A and B are complex). This may also be written tex2html_wrap_inline19135.

The approximate error bounds for the computed eigenvalues tex2html_wrap_inline18636 are
displaymath19053
The approximate error bounds   for the computed eigenvectors tex2html_wrap_inline18638, which bound the acute angles between the computed eigenvectors and true eigenvectors tex2html_wrap_inline18630, are    
displaymath18597
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 = PSLAMCH( ICTXT, 'E' )
          UNFL = PSLAMCH( ICTXT, 'U' )
    *     Solve the eigenproblem A - lambda B (ITYPE = 1)
          ITYPE = 1
    *     Compute the norms of A and B
          ANORM = PSLANSY( '1', UPLO, N, A, IA, JA, DESCA, WORK )
          BNORM = PSLANSY( '1', UPLO, N, B, IB, JB, DESCB, WORK )
    *     The eigenvalues are returned in W
    *     The eigenvectors are returned in A
          SUBROUTINE PSSYGVX( ITYPE, 'V', 'A', UPLO, N, A, IA, JA,
         $                    DESCA, B, IB, JB, DESCB, VL, VU, IL, IU,
         $                    UNFL, M, NZ, W, -1.0, Z, IZ, JZ, DESCZ,
         $                    WORK, LWORK, IWORK, LIWORK, IFAIL, ICLUSTR,
         $                    GAP, INFO )
          IF( INFO.GT.0 ) THEN
             PRINT *,'PSSYGVX did not converge, or B not positive definite'
          ELSE IF( N.GT.0 ) THEN
    *        Get reciprocal condition number RCONDB of Cholesky factor of B
             CALL PSTRCON( '1', UPLO, 'N', N, B, IB, JB, DESCB, RCONDB,
         $                 WORK, LWORK, IWORK, LIWORK, 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 example, if tex2html_wrap_inline18242,
    displaymath19055
    then tex2html_wrap_inline19145, tex2html_wrap_inline19147, and tex2html_wrap_inline19149, and the approximate eigenvalues, approximate error bounds, and true errors are shown below.


    tabular6044

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

          EPSMCH = PSLAMCH( ICTXT, 'E' )
    *     Solve the eigenproblem A*B - lambda I (ITYPE = 2)
          ITYPE = 2
    *     Compute the norms of A and B
          ANORM = PSLANSY( '1', UPLO, N, A, IA, JA, DESCA, WORK )
          BNORM = PSLANSY( '1', UPLO, N, B, IB, JB, DESCB, WORK )
    *     The eigenvalues are returned in W
    *     The eigenvectors are returned in A
          SUBROUTINE PSSYGVX( ITYPE, 'V', 'A', UPLO, N, A, IA, JA,
         $                    DESCA, B, IB, JB, DESCB, VL, VU, IL, IU,
         $                    UNFL, M, NZ, W, -1.0, Z, IZ, JZ, DESCZ,
         $                    WORK, LWORK, IWORK, LIWORK, IFAIL, ICLUSTR,
         $                    GAP, INFO )
          IF( INFO.GT.0 .AND. INFO.LE.N ) THEN
             PRINT *,'PSSYGVX 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 PSTRCON( '1', UPLO, 'N', N, B, IB, JB, DESCB, RCONDB,
         $                 WORK, LWORK, IWORK, LIWORK, 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 shown below.


    tabular6068

Further Details: Error Bounds for the Generalized Symmetric Definite Eigenproblem 

The error analysis of the driver routine PxSYGVX, or PxHEGVX in the complex case      (see section 3.2.4), goes as follows. In all cases tex2html_wrap_inline18712 is the absolute gap   between tex2html_wrap_inline18626 and the nearest other eigenvalue.  

  1. tex2html_wrap_inline18087. The computed eigenvalues tex2html_wrap_inline19245 can differ from true eigenvalues tex2html_wrap_inline18626 by at most about
    displaymath19056

        The angular difference between the computed eigenvector tex2html_wrap_inline18638 and a true eigenvector tex2html_wrap_inline18630 is
    displaymath19057

  2. tex2html_wrap_inline18089 or tex2html_wrap_inline18091. The computed eigenvalues tex2html_wrap_inline19245 can differ from true eigenvalues tex2html_wrap_inline18626 by at most about
    displaymath19058

       

    The angular difference between the computed eigenvector tex2html_wrap_inline18638 and a true eigenvector tex2html_wrap_inline18630 is
    displaymath19059

The code fragments above replace p(n) by 1 and make sure neither RCONDB nor RCONDZ is so small as to cause overflow when used as divisors in the expressions for error bounds.

These error bounds are large when B is ill-conditioned with respect to inversion (tex2html_wrap_inline19277 is large). Often, the eigenvalues and eigenvectors are much better conditioned than indicated here. We mention two ways to get tighter bounds. The first way is effective when the diagonal entries of B differ widely in magnitude:gif

  1. tex2html_wrap_inline18087. Let tex2html_wrap_inline19283 be a diagonal matrix. Then replace B by DBD and A by DAD in the above bounds.
  2. tex2html_wrap_inline18089 or tex2html_wrap_inline18091. Let tex2html_wrap_inline19283 be a diagonal matrix. Then replace B by DBD and A by tex2html_wrap_inline19305 in the above bounds.

The second way to get tighter bounds does not actually supply guaranteed bounds, but its estimates are often better in practice. It is not guaranteed because it assumes the algorithm is backward stable, which is not necessarily true when B is ill-conditioned.     It estimates the chordal distance between a true eigenvalue tex2html_wrap_inline18626 and a computed eigenvalue tex2html_wrap_inline19245:  
displaymath19060
To interpret this measure, we write tex2html_wrap_inline19313 and tex2html_wrap_inline19315. Then tex2html_wrap_inline19317. In other words, if tex2html_wrap_inline19245 represents the one-dimensional subspace tex2html_wrap_inline17614 consisting of the line through the origin with slope tex2html_wrap_inline19245, and tex2html_wrap_inline18626 represents the analogous subspace tex2html_wrap_inline17602, then tex2html_wrap_inline19329 is the sine of the acute angle tex2html_wrap_inline17870 between these subspaces.     Thus, tex2html_wrap_inline19333 is bounded by one and is small when both arguments are large.gif It applies only to the first problem, tex2html_wrap_inline18087:

Suppose a computed eigenvalue tex2html_wrap_inline19245 of tex2html_wrap_inline18087 is the exact eigenvalue of a perturbed problem tex2html_wrap_inline19345. Let tex2html_wrap_inline17852 be the unit eigenvector (tex2html_wrap_inline19349) for the exact eigenvalue tex2html_wrap_inline18626. Then if tex2html_wrap_inline19353 is small compared with tex2html_wrap_inline19355, and if tex2html_wrap_inline19357 is small compared with tex2html_wrap_inline19359, we have
displaymath19061
Thus tex2html_wrap_inline19363 is a condition number for eigenvalue tex2html_wrap_inline18626.  

next up previous contents index
Next: Troubleshooting Up: Accuracy and Stability Previous: Further Details: Error Bounds

Susan Blackford
Tue May 13 09:21:01 EDT 1997