|Re: [eigen] Implementation of eigs?|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] Implementation of eigs?
- From: Mark Borgerding <mark@xxxxxxxxxxxxxx>
- Date: Thu, 18 Jun 2020 09:53:45 -0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/simple; d=borgerding.net; s=20191115-ca3xhr5z; t=1592488426; bh=05ruHlcRc6bHr43TPIYaf4bQwLw2rT4sY8EWLTb8Qvk=; h=Subject:To:From:Date:From; b=KQsr0yBEaX0OBeai8jasPULACDgYNgMona9eDvfMhnzjBrSrKy26l24iAUnLqpebn zq0ATE/v0w9HGnSiCOVBupsyB2CT0XRr3YHMqcXGae08q5kAdg9ZLNlB/Jj+42DTty 5Aia73nV+DDRH04yB/HeaOLIBWYmJagEYoiSATOs=
Randomized sketches work well to find the largest K of N eigenvectors
when K << N.
The idea is similar to power iteration, but instead of iteratively
transforming and normalizing a single random vector, you use several of
them and repeatedly orthogonalize them. The span of these vectors
converges to the span of the largest eigenvectors. As with power
iteration, the speed of convergence and accuracy depends on the flatness
of the matrix spectrum.
By using a few extra dimensions above what you care about, you can
improve convergence. e.g. use 13 vectors instead of 10.
-- Mark Borgerding
On 6/18/20 7:03 AM, Mathieu Dutour wrote:
> For some computation I need to compute the say 10 highest eigenvalues
> of a symmetric positive definite matrix.
> The numerical technique is typically the power-method but this gives only
> the highest eigenvector and more work is required for getting more than
> one eigenvector.
> In Matlab the command of choice is eigs(A, 10) and it is implemented as
> well in the "octave" open source software.
> Could we have such a functionality in Eigen? That would be fairly natural
> for Eigen.