The Arnoldi Method with Krylov-Schur restart, natively in Julia.
partialschur!
and ArnoldiWorkspace
, which
can be used to pre-allocate (custom) matrices. Also it can be used to run the
algorithm from an existing partial Schur decomposition.Merged pull requests:
Closed issues:
BREAKING: The target structs LM
, SR
, LR
, SI
, LI
are no longer exported. You have to
import them explicitly: using ArnoldiMethod: LM
. But easier is to update your code from structs
LM()
to symbols :LM
(which requires at least v0.3).
ArnoldiMethod.jl now exports partialschur!
and ArnoldiWorkspace
, which can be used to
pre-allocate (custom) matrices. Also it can be used to run the algorithm from an existing partial
Schur decomposition.
Merged pull requests:
Closed issues:
This release implements purging of converged, unwanted Ritz values. This should improve stability of the Krylov-Schur restart, as previously converged but unwanted Ritz values caused tiny residuals, which appear in a vector we need to compute a reflector for, leading to instabilities. For additional stability, we also implement the initial rotations in the Krylov-Schur restart through Given's rotations instead of Householder reflections. The square H matrix is brought back with Householder reflections afterwards.
Fix a bug where ArnoldiMethod.jl
would accidentally use eps(typeof(tol))
in the stopping criterion instead of the matrix number type. So, with say BigFloat and tol = 1e-30 it would converge to 1e-16 accuracy instead of 1e-30.
:LM
, :SR
, :LR
, :SI
and :LI
symbols for partialschur(..., which=...)
, as seen in Arpack.jl and KrylovKit.jl.CITATION.cff
Closed issues:
Merged pull requests:
PartialSchur.eigenvalues
was not the last converged eigenvalue, but simply the last Ritz value.