ArnoldiMethodTransformations.ArnoldiMethodTransformations
— Modulemodule ArnoldiMethodTransformations
Provides convenience wrapper for interfacing with the package ArnoldiMethod.
Implements the shift-and-invert transformation detailed here.
The main functions are partialschur(A,[B],σ; kwargs...)
and partialeigen(A,σ; kwargs...)
The constants USOLVER
, PSOLVER
, and MSOLVER
are exported.
ArnoldiMethodTransformations.ShiftAndInvert
— Typestruct ShiftAndInvert
Container for arrays in ArnoldiMethod.partialschur
function ShiftAndInvert(A, [B]; σ=0, diag_inv_B=false, lupack=USOLVER) -> si
create a LinearMap object to feed to ArnoldiMethod.partialschur which transforms Ax=λBx
into (A-σB)⁻¹Bx=x/(λ-σ)
.
Set diag_inv_B=true
if B
is both diagonal and invertible, so that it is easy to compute B⁻¹
. In this case instead return a linear map (B⁻¹A-σI)⁻¹
, which has same evals as above.
A
and B
must both be sparse or both dense. A
, B
, σ
need not have common element type.
Keyword lupack
determines what linear algebra library to use. Options are PSOLVER
, MSOLVER
, USOLVER
(the default). For all solvers besides UMFPACK, the appropriate library must be loaded at the top level. –––––
function ::ShiftAndInvert(y,x)
A\B*x = y
ArnoldiMethod.partialeigen
— Methodpartialeigen(decomp, σ) -> λ, v
Transforms a partial Schur decomposition into an eigendecomposition, outputting evals `λ` and evecs `v`.
It undoes the shift-and-invert of the eigenvalues by `σ`.
ArnoldiMethod.partialschur
— Functionpartialschur(A, [B], σ; [diag_inv_B=false, lupack=USOLVER, kwargs...]) -> decomp, history
Partial Schur decomposition of A
, with shift σ
and mass matrix B
, solving Av=σBv
Keyword diag_inv_B
defaults to true
if B
is both diagonal and invertible. This enables a simplified shift-and-invert scheme.
Keyword lupack
determines what linear algebra library to use. Options are PSOLVER
, MSOLVER
, USOLVER
(the default). For all solvers besides UMFPACK, the appropriate library must be loaded at the top level.
For other keywords, see ArnoldiMethod.partialschur
see also: partialeigen
in ArnoldiMethod