Hi Ted,

If the eigenvectors are premultiplied by the diagonal/eigenvalues before they're persisted, I guess this the reason why it's okay for the eigenvalues not to be persisted separately? From looking at the code, persistence takes place in two places:

   * DistributedLanczosSolver.serializeOutput(): although the message
     "Persisting X eigenVectors and eigenValues to..." would appear to
     signify that the eigenvalues are persisted. The eigenValues List
     is in fact ignored here.
   * EigenVerificationJob.saveCleanEigens() (--cleansvd argument has
     been specified): this persists EigenVector instances, which are
     subclasses of DenseVector. The eigenValue and cosAngleError are
     stored within a EigenVector.name String, and some parse methods
     exist to retrieve them. However, in practice, both of these values
     are ignored as VectorWritable.writeVector() appears to save
     EigenVectors as DenseVectors.

If it was intended that the eigenvalues should actually be persisted, then it looks like there may be a bug here.

Regards,

Derek

On 25/02/11 17:36, Ted Dunning wrote:
Generally the SVD in these sorts of situations does not return the entire
set of three matrices.  Instead either the left or right (but usually the
right) eigenvectors premultiplied by the diagonal or the square root of the
diagonal element.

I can't comment specifically on your situation, but hopefully knowing that
the algorithm isn't supposed to return all three matrices will help you.

On Fri, Feb 25, 2011 at 7:37 AM, Dan Brickley<[email protected]>  wrote:

My problem is that I was imagining the results would be three factor'd
matrixes (which when multiplied would reproduce the original, and from
which I could take left-most columns per various SVD tutorials).

Reply via email to