Skip to content

cournape/arnoldi-py

Repository files navigation

Arnoldi

This is an attempt to write an eigensolver for sparse matrices that only relies on NumPy and BLAS/LAPACK, without depending on ARPACK. Ultimately, the hope is to be a viable replacement for scipy.sparse.eigen, and remove the fortran dependency.

Why ?

ARPACK-NG is a fortran library for sparse eigen solvers. It has the following issues:

  • the fortran code is not thread-safe. In particular, it is not re-entrant
  • it does not incorporate some of the more recent improvements discovered for large problems, e.g. A Krylov-Schur Algorithm for Large Eigenproblems, G. W. Stewart, SIAM J. M ATRIX A NAL. A PPL ., Vol. 23, No. 3, pp. 601–614

TODO

  • Fundamental support for arbitrary matrices, largest eigen values only
    • basic arnoldi decomp w/ tests
    • add a key set of test matrices, using sparse matrix suite + synthetic (Markov, Laplace, etc.)
    • convergence tracking on Ritz values
    • explicit restart support with deflation
    • krylov-schur method
  • add support for shift-invert (arbitrary eigen values)
  • extend to Hermitian/symmetric matrices (Lanczos)

Existing alternative implementations

References

About

pure python reference implementation of sparse eigen solvers

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published