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

Error Bounds for the Singular Value Decomposition

 

The singular  value decomposition (SVD) of a real m-by-n matrix A is defined as follows. Let tex2html_wrap_inline14127. The SVD of A is tex2html_wrap_inline14119 (tex2html_wrap_inline14133 in the complex case), where U and V are orthogonal (unitary) matrices and tex2html_wrap_inline18852 is diagonal, with tex2html_wrap_inline18854. The tex2html_wrap_inline12826 are the singular values of A and the leading r columns tex2html_wrap_inline12840 of U and tex2html_wrap_inline12842 of V the left and right singular vectors, respectively. The SVD of a general matrix is computed by PxGESVD      (see subsection 3.2.3).

The approximate error bounds for the computed singular values tex2html_wrap_inline18870 are
displaymath18830
The approximate error bounds for the computed singular vectors tex2html_wrap_inline18872 and tex2html_wrap_inline18874, which bound the acute angles between the computed singular vectors and true singular vectors tex2html_wrap_inline12842 and tex2html_wrap_inline12840, are    
eqnarray5899
These bounds can be computing by the following code fragment:    

      EPSMCH = PSLAMCH( ICTXT, 'E' )
*     Compute singular value decomposition of A
*     The singular values are returned in S
*     The left singular vectors are returned in U
*     The transposed right singular vectors are returned in VT
      CALL PSGESVD( 'V', 'V', M, N, A, IA, JA, DESCA, S, U, IU, JU,
     $              DESCU, VT, IVT, JVT, DESCVT, WORK, LWORK, INFO )
      IF( INFO.GT.0 ) THEN
         PRINT *,'PSGESVD did not converge'
      ELSE IF( MIN( M, N ).GT.0 ) THEN
         SERRBD  = EPSMCH * S( 1 )
*        Compute reciprocal condition numbers for singular vectors
         CALL SDISNA( 'Left', M, N, S, RCONDU, INFO )
         CALL SDISNA( 'Right', M, N, S, RCONDV, INFO )
         DO 10 I = 1, MIN( M, N )
            VERRBD( I ) = EPSMCH*( S( 1 ) / RCONDV( I ) )
            UERRBD( I ) = EPSMCH*( S( 1 ) / RCONDU( I ) )
10       CONTINUE
      END IF

For example, if tex2html_wrap_inline18242 and
displaymath18831
then the singular values, approximate error bounds, and true errors are given below.


tabular5913




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