I am trying out the arpack driver dsdrv1, which is used to iteratively obtain the first m eigenvectors from the eigenvalue problem.
$$ \hat{A}\mathbf{x} = \lambda\mathbf{x} $$
As it is an iterative procedure, a good initial guess will reduce the number of iterations needed for convergence. One of the best initial guesses is presumably the correct eigenvectors (obtained, for example, from a previous run).
With arpack's dsdrv1 driver, You can supply an initial guess through the NxN residual array passed to dsaupd, which is fine if you are only computing one eigenvector. However, I am computing m eigenvectors.
I.e. Say I have m correct eigenvectors obtained from a previous run of dsdrv1. How would I utilise these vectors to minimise the number of iterations in a new call to dsdrv1.
I've tried feeding the lowest converged eigenvector back into the procedure by assigning it to the residual array and setting info to 1. Only a few iterations are required if I'm only calculating the first eigenvector. But when I calculate more, the initial guess is worse than a random initial vector. I've also tried feeding the average of all eigenvectors as an initial guess, but no luck either.
In short, if I have all the data from a successful dsdrv1 calculation, can I use it to minimise the number of iterations in a 2nd dsdrv1 run applied to the same eigenvalue problem?