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

  1. Initialise subspace with unit vectors (or a user-supplied guess)
  2. Build projected matrix (size , grows each step)
  3. Diagonalise Ritz values and Ritz vectors
  4. Check residuals for all :
    • Converged when for all
  5. Expand: Orthogonalise the worst residual against via Modified Gram-Schmidt (MGS); append the new column to and
  6. 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.