Skip to content

Davidson Algorithm

Under Construction

This page will cover the Davidson diagonalization algorithm for computing multiple low-lying eigenvalues.

Overview

The Davidson algorithm is an iterative diagonalization method that is superior to Lanczos when you need multiple eigenvalues simultaneously. It builds a Krylov-like subspace but applies diagonal preconditioning to improve convergence.

API

import qkrylov as qk

result = qk.davidson_lowest(H, n_eig=3, max_subspace=20, tol=1e-8)
print(result.eigenvalues)   # first 3 eigenvalues
print(result.eigenvectors)  # corresponding eigenvectors
auto result = davidson_lowest(H, /*n_eig=*/3, /*max_subspace=*/20, /*tol=*/1e-8);
for (double e : result.eigenvalues) {
    std::cout << e << "\n";
}

Coming Soon

Julia bindings are planned via extern "C" FFI. See the roadmap.

Coming Soon

  • Full parameter documentation
  • Convergence analysis
  • Comparison with Lanczos for multiple eigenvalues