Eigs does not work

Trying to use eigs from Arpack gives me a lot of trouble, is there any alternative?

https://github.com/JuliaLinearAlgebra/Arpack.jl/issues/96

Yes, for example

using ArnoldiMethod
decomp, history = partialschur(M)
λ, evs = partialeigen(decomp);

or

using KrylovKit
λ, evs = eigsolve(M);

where M is the sparse matrix.

4 Likes

In LightGraphs, we have defined

function eigs(A; kwargs...)
    schr =partialschur(A; kwargs...)
    vals, vectors = partialeigen(schr[1])
    reved = (kwargs[:which] == LR() || kwargs[:which] == LM())
    k::Int = get(kwargs, :nev, length(vals))
    k = min(k, length(vals))
    perm = collect(1:k)
    if vals[1] isa(Real)
        perm = sortperm(vals, rev=reved)
        perm = perm[1:k]
    end
    λ = vals[perm]
    Q = vectors[:, perm]
    return λ, Q
end

in terms of the functions exported from ArnoldiMethod.jl.
(cc @jpfairbanks). Don’t ask me how it works; I don’t do matrices.

1 Like

Thanks! I need the 2 argument version with generalized eigenvalue problem, not only the 1 argument one

What seems to be the problem?