Given a matrix $M$ and a vector $v$, is there an efficient method to find the normalized eigenvector of $M$ that is closest to $v$, in that it has maximal overlap. More explicitly, a vector $v$ can be decomposed like so \begin{equation} v = \sum_j \alpha_j u_j, \end{equation} where $u_j$ are the eigenvectors of $M$. I wish to find the subset for which $\alpha_j = v \cdot u_j$ are the largest, without solving the full eigenproblem.

In particular I'm interested in Hermitian matrices, often symmetric and often sparse. By efficient I mean that I should be able to find $R<N$ eigenvectors of an $N \times N$ matrix with the largest overlap with better scaling than diagonalising the full matrix then sorting.

I think this is an interesting question because all algorithms (at least that I know) work by utilising the properties of the dominant eigenvalue - that multiple applications of the matrix projects onto the eigenvector with that eigenvalue. By shifting/inverting it is possible to pick which should be the dominant eigenvalues. It therefore seems that these algorithms fundamentally can't pick out specific eigenvectors only eigenvalues. I am wondering if it is even possible to select a particular eigenvector.

Note that this question has been asked over three years ago on the maths stackexchange and over 2 years ago on this stackexchange, but with no answer:


calculating eigenvector components of a given vector

Solution (added 31 Jan 2019) -------------------------------------------------------------

Thank you to demaregee for pointing me to the paper


which provides a nice solution to the problem using a variation of the Jacobi-Davidson alogirthm.

The basic idea is to consider instead the projected eigenproblem \begin{equation} V^\dagger M V c = \theta c, \end{equation} where $V$ is an $N\times K$ matrix where the columns are orthonormal vectors which span the "test space", and $u = Vc$ is the approximation of the vector. The problem is then how to choose and update the test space until u converges to the correct eigenvector.

Let $u$ be our current best solution and $V$ our test space. We then solve the correction equation \begin{equation} (M - \theta I) z = -r, \qquad r = (1 - VV^\dagger)(M - \theta I)u, \end{equation} for the correction vector $z$, where $\theta$ is our current approximation of the eigenvalue and $u$ the current approximation of the target vector. We then orthogonalize $z$ to $V$, normalize, and then extend the test space $V \rightarrow [Vz]$.

We then solve the projected eigenproblem and take the solution $u_j = Vc_j$ that has the largest overlap with $v$ as the next approximation to $u$ and update the corresponding eigenvalue $\theta$. We start with the test space being the single vector $V = v$, the vector we want to target and the whole process is repeated until $\|(M - \theta I)u \| < \epsilon$, where $\epsilon$ is our chosen accuracy.

The algorithm can be made more complicated by adding restarts that limit the number of vectors in the test space. We can also target multiple eigenvectors by projecting out all converged vectors from the problem.

  • $\begingroup$ Since eigenvectors are only determined up to a sign, when you say "largest $\alpha_j$", I suspect that you mean "largest in magnitude", right? $\endgroup$ Commented Oct 22, 2017 at 22:27
  • $\begingroup$ That's correct. $\endgroup$
    – as2457
    Commented Oct 22, 2017 at 22:28

1 Answer 1


The following paper suggests that the Jacobi-Davidson method can be used to target eigenvectors based on "any property that can be computed from the eigenvector", which would seem to include overlap with a given vector.


According to the paper, the key is just to reorder the QR decomposition by your desired property rather than by closeness to a target eigenvalue during each iteration of the Jacobi-Davidson algorithm. Thus, it seems like a minimal modification of existing Jacobi-Davidson codes.

I'm not aware of any codes that support this type of targeting built in, but would be quite interested in implementing/testing one.

  • $\begingroup$ I would welcome further answers, as I would like to know more about this target. $\endgroup$
    – deemaregee
    Commented Nov 12, 2018 at 21:25
  • 1
    $\begingroup$ From a first glance this sounds perfect, thanks! I'll have a proper read through the paper before accepting your answer. I'll also add an explicit solution to my question if it is simple enough to express. $\endgroup$
    – as2457
    Commented Nov 14, 2018 at 9:21
  • $\begingroup$ Thank you very much! I wasn't able to implement the algorithm exactly as in the paper, but a simplified version works perfectly for my purposes. I'll add the basics of the algorithm to my question. $\endgroup$
    – as2457
    Commented Jan 31, 2019 at 7:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.