singular matrix

Chetan Jhurani chetan at
Thu Apr 16 12:12:44 CDT 2009

> -----Original Message-----
> From: Jose E. Roman
> On 16/04/2009, Yixun Liu wrote:
> > For Ax=b, A is mxn, m>n. I use CG to resolve it and find the solution
> > makes no sense.  I guess rank(A) < min(m,n). How to resolve this
> > singular system? Use SVD?
> >
> > Best,
> >
> > Yixun
> Although it is probably not the most efficient way, you can use SLEPc  
> to compute an SVD-based approximation of the pseudo-inverse, A+, then  
> pre-multiply vector b. The following sequence should do the task.
> 1) Compute p<n singular triplets with SLEPc's SVD solver.
> 2) VecMDot of b with the left singular vectors.
> 3) Scale the resulting values with the reciprocals of singular values.
> 4) VecMAXPY of right singular vectors using the coefficients 
> obtained in 3)

I am not sure of the order in which the p singular values would be
determined in SLEPc, but if they are the p largest values, then the
approximate pseudoinverse determined from them could be far from the
"exact" pseudoinverse.

In essence, the smallest singular values are those that determine the
magnitude of the entries of the pseudoinverse, and those have been
ignored in the approximation by truncation above.

The reciprocals are used in step 3 above.  Reciprocals of the ignored
(n - p - z) singular values (where z is the number of zero singular
values) will be large compared to the reciprocals of the p larger
values and the approximation to pseudoinverse may not be good at all.

I think this analysis is correct, but let me know if I've made a stupid


> Jose

More information about the petsc-users mailing list