# Finding interior eigenvalues using Davidson algorithm

Is it possible to find interior eigenvalues closer to some lambda using Davidson method? I was searching online but found that most people use Jacobi-Davidson method for that.

• please refer to this paper. "Targeted excited state algorithms" – Izzy Vang Nov 24 '19 at 21:48
• Do you mean this paper? Can you write a brief description of why would this paper be useful to answer the question? Unfortunately, in the current form, this answer was not up to the standards of SE, so I converted it to a comment. Feel free to repost it as an answer @IzzyVang with a little more details. – Anton Menshov Nov 24 '19 at 22:03

## 1 Answer

It should be possible, but it might not be the most efficient. Here's how I would do it.

The Davidson method builds a subspace to represent a desired region of the eigenspectrum. The important parts of Davidson are the methods to add and remove vectors from that subspace. When comparing to 'normal' Davidson, I'll assume it is looking for the lowest eigenvalues.

Normally, Davidson adds the residuals from the lowest eigenvalue approximate solutions: $$K (A - \tilde \lambda_i I) \tilde v_i \quad : \quad i < n$$ where $K$ is the preconditioner (approximate inverse), $\tilde \lambda_i$ is an approximate eigenvalue, $\tilde v_i$ is the corresponding approximate eigenvector, $i$ sorts in ascending order, and $n$ is the number of desired eigenvectors. You would want to change the sorting to be by distance from your desired eigenvalue.

Davidson adds vectors to the subspace at every iteration. If the starting guesses are bad and many iterations are required, the subspace gets polluted with the high eigenspaces. Normally, the approximate eigenvectors with large eigenvalues are trimmed from the subspace periodically. You would want to trim the eigenvectors that are the farthest away from your desired eigenvalue. The easiest way is to restart the procedure using your best approximations of the desired eigenpairs as the starting guess.

• Hi Max, thanks for your kind reply. I am currently using the very basic Davidson method that find just one eigenvalue. As you mentioned (If I understood you correctly) I sorted the eigenvalues and vectors by distance (kept first in the list the ones closer to the desired value) and also restarted the problem using the best computed pair every 10 to 20 iterations. I noticed that it toggles between a few eigenvalues around the desired value. but never converges. – Waltee Apr 7 '14 at 16:55
• If you don't remove vectors from the subspace (don't restart), is it converging? – Max Hutchinson Apr 7 '14 at 19:50