spectra icon indicating copy to clipboard operation
spectra copied to clipboard

Calculate eigenvalues in multiple steps?

Open fcooper8472 opened this issue 7 years ago • 2 comments

I am trying to find the largest K eigenvalues of a real symmetric matrix, where K is unknown, but is such that their sum is greater than some value. I am using SymEigsSolver.

Is there some way to calculate the largest N eigenvalues, and then if necessary calculate the next M largest, without starting 'from scratch' and calculating the first N + M?

Ideally, I would like to efficiently calculate as few as possible in order to satisfy some arbitrary condition on those currently calculated.

fcooper8472 avatar Dec 18 '17 23:12 fcooper8472

This is related to what I call a sequential PCA: http://ieeexplore.ieee.org/abstract/document/8258403/.

The idea is actually very simple: for a matrix A, if you have computed the largest k eigenvalues Dk and eigenvectors Gk, then the (k+1)-th eigenvalue is the largest eigenvalue of A - Gk * Dk * Gk'. In this way you can compute the eigenvalues sequentially until your termination condition is met.

The tricky part is how to properly define the matrix operator, and how to "warm start" from previous calculations.

yixuan avatar Feb 28 '18 19:02 yixuan

Hello, any news on this front? It would be nice to be able to reuse the Ritz base from the previous iteration.

eduardotsimoes avatar Apr 26 '21 10:04 eduardotsimoes