[SciPy-User] v0 initial vector for scipy.sparse.linalg.eigs()

James Jensen jdjensen at eng.ucsd.edu
Tue Mar 24 19:45:40 EDT 2015


I have to quickly compute the principal eigenpair of a dense matrix. I've
been using scipy.sparse.linalg.eigs() with k=1; it works for dense matrices
and is faster than the alternatives in scipy.linalg.

In my application, I do multiple successive eigendecompositions; each
matrix to be decomposed differs only slightly from the previous. So in a
simple power iteration I can use the previous principal eigenvector (with a
slight modification) rather than a random initial vector and usually
achieve convergence faster than from a random start.

The eigs() function allows warm starts; it takes a parameter, v0, for the
initial vector. I imagine that the v0 option could make eigs() faster than
my warm-started power iteration. However, passing the previous principal
eigenvector for v0 does not speed up eigs(); in fact, it makes it somewhat
slower, usually between 10% and 50%.

Should I be passing a different vector as v0? Is eigs() not expecting v0 to
be a guess of the eigenvector(s)? Any other ideas?

Thanks for the help,

James Jensen
PhD student, Bioinformatics and Systems Biology
Trey Ideker lab
University of California, San Diego
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20150324/163df3d9/attachment.html>


More information about the SciPy-User mailing list