Davidson Partial Eigensolver
A Rayleigh–Ritz iterative procedure for finding the k lowest eigenvalues and eigenvectors of a large matrix without forming or storing it explicitly. Only matrix-vector products are required (supplied as a closure or via finite-difference gradient evaluations).
Algorithm
- Initialise subspace with unit vectors (or a user-supplied guess)
- Build projected matrix (size , grows each step)
- Diagonalise Ritz values and Ritz vectors
- Check residuals for all :
- Converged when for all
- Expand: Orthogonalise the worst residual against via Modified Gram-Schmidt (MGS); append the new column to and
- Restart when : retain the best Ritz vectors
Modified Gram-Schmidt Orthogonalisation
Uses a sequential projection:
Returns None when the projected norm falls below tol (linear dependence).
Usage in OpenQuantum
The Davidson solver is used internally by refine_ts_hessian_via_davidson
to determine an initial TS-mode direction from finite-difference Hessian-vector
products, before the TS-BFGS update takes over.
It is also used by the Sella optimizer for adaptive eigenvalue correction.