Generalized Eigen Decomposition
For the two-input generalized eigensolution version,
eigs(A, B; nev=6, ncv=max(20,2*nev+1), which=:LM, tol=0.0, maxiter=300, sigma=nothing, ritzvec=true, v0=zeros((0,))) -> (d,[v,],nconv,niter,nmult,resid)
the following keyword arguments are supported:
nev: Number of eigenvaluesncv: Number of Krylov vectors used in the computation; should satisfynev+1 <= ncv <= nfor real symmetric problems andnev+2 <= ncv <= nfor other problems, wherenis the size of the input matricesAandB. The default isncv = max(20,2*nev+1). Note that these restrictions limit the input matrixAto be of dimension at least 2.which: type of eigenvalues to compute. See the note below.
which | type of eigenvalues |
|---|---|
:LM | eigenvalues of largest magnitude (default) |
:SM | eigenvalues of smallest magnitude |
:LR | eigenvalues of largest real part |
:SR | eigenvalues of smallest real part |
:LI | eigenvalues of largest imaginary part (nonsymmetric or complex A only) |
:SI | eigenvalues of smallest imaginary part (nonsymmetric or complex A only) |
:BE | compute half of the eigenvalues from each end of the spectrum, biased in favor of the high end. (real symmetric A only) |
tol: relative tolerance used in the convergence criterion for eigenvalues, similar totolin theeigs(A)method for the ordinary eigenvalue problem, but effectively for the eigenvalues of $B^{-1} A$ instead of $A$. See the documentation for the ordinary eigenvalue problem ineigs(A)and the accompanying note abouttol.maxiter: Maximum number of iterations (default = 300)sigma: Specifies the level shift used in inverse iteration. Ifnothing(default), defaults to ordinary (forward) iterations. Otherwise, find eigenvalues close tosigmausing shift and invert iterations.ritzvec: Returns the Ritz vectorsv(eigenvectors) iftruev0: starting vector from which to start the iterations
eigs returns the nev requested eigenvalues in d, the corresponding Ritz vectors v (only if ritzvec=true), the number of converged eigenvalues nconv, the number of iterations niter and the number of matrix vector multiplications nmult, as well as the final residual vector resid.
We can see the various keywords in action in the following examples:
julia> A = sparse(1.0I, 4, 4); B = Diagonal(1:4);
julia> λ, ϕ = eigs(A, B, nev = 2);
julia> λ
2-element Array{Float64,1}:
1.0000000000000002
0.5
julia> A = Diagonal([1, -2im, 3, 4im]); B = sparse(1.0I, 4, 4);
julia> λ, ϕ = eigs(A, B, nev=1, which=:SI);
julia> λ
1-element Array{Complex{Float64},1}:
-1.5720931501039814e-16 - 1.9999999999999984im
julia> λ, ϕ = eigs(A, B, nev=1, which=:LI);
julia> λ
1-element Array{Complex{Float64},1}:
0.0 + 4.000000000000002imThe sigma and which keywords interact: the description of eigenvalues searched for by which do not necessarily refer to the eigenvalue problem $Av = Bv\lambda$, but rather the linear operator constructed by the specification of the iteration mode implied by sigma.
sigma | iteration mode | which refers to the problem |
|---|---|---|
nothing | ordinary (forward) | $Av = Bv\lambda$ |
| real or complex | inverse with level shift sigma | $(A - \sigma B )^{-1}B = v\nu$ |