JuliaLinearAlgebra / IterativeSolvers.jl

Iterative algorithms for solving linear systems, eigensystems, and singular value problems
MIT License
394 stars 106 forks source link

Look-ahead Lanczos Quasi-Minimal Residual #322

Open platawiec opened 1 year ago

platawiec commented 1 year ago

This is a companion PR to #321 . This will be rebased on top of that PR once merged (couldn't figure out how to stack the PRs in this case)

Background

This PR introduces lalqmr, along with an iterable implementation, which solves linear systems via QMR with a Look-ahead Lanczos process.

The motivation for using the look-ahead process is for use in non-hermitian linear systems, particularly ones which aren't well-conditioned, where the standard Lanczos process encounters either exact or numerical breakdown. The look-ahead technique circumvents the breakdown by constructing blocks in the sequence, such that the generated sequences avoid breakdown.

Implementation Details

As in #321 , we limit the memory of the allocated matrices as much as possible. There is still room for further optimizations, but their benefit is limited compared to the matrix-vector products.

Tests

This implementation is tested against some contrived matrices which guarantee block creation during QMR, as well as the standard test-suite. Additional test suggestions welcome.

Future directions

References