I've looked a bit into this. I believe there is a bug in the Julia wrappers 
on 0.4. The good news is that the bug appears to be fixed on 0.5. The bad 
news is the ARPACK seems to have a hard time with the problem. I get

julia> eigs(A,C,nev = 1, which = :LR)[1]
ERROR: Base.LinAlg.ARPACKException("unspecified ARPACK error: -9999")
 in aupd_wrapper(::Type{T}, ::Base.LinAlg.#matvecA!#67{Array{Float64,2}}, 
::Base.LinAlg.##64#71{Array
{Float64,2}}, ::Base.LinAlg.##65#72, ::Int64, ::Bool, ::Bool, ::String, 
::Int64, ::Int64, ::String, :
:Float64, ::Int64, ::Int64, ::Array{Float64,1}) at ./linalg/arpack.jl:53
 in #_eigs#60(::Int64, ::Int64, ::Symbol, ::Float64, ::Int64, ::Void, 
::Array{Float64,1}, ::Bool, ::B
ase.LinAlg.#_eigs, ::Array{Float64,2}, ::Array{Float64,2}) at 
./linalg/arnoldi.jl:271
 in (::Base.LinAlg.#kw##_eigs)(::Array{Any,1}, ::Base.LinAlg.#_eigs, 
::Array{Float64,2}, ::Array{Floa
t64,2}) at ./<missing>:0
 in #eigs#54(::Array{Any,1}, ::Function, ::Array{Float64,2}, 
::Array{Float64,2}) at ./linalg/arnoldi.
jl:80
 in (::Base.LinAlg.#kw##eigs)(::Array{Any,1}, ::Base.LinAlg.#eigs, 
::Array{Float64,2}, ::Array{Float6
4,2}) at ./<missing>:0

and since SciPy ends up with the same conclusion I conclude that the issue 
is ARPACK. Matlab is doing something else because they are able to handle 
this problem.

Given that 0.5 is almost release, I'll not spend more time on the issue on 
0.4. Thought, if anybody is able to figure out what is going on, please let 
us know.

On Friday, August 5, 2016 at 8:47:26 AM UTC-4, Madeleine Udell wrote:
>
> Setting `which=:LR, nev=1` does not return the generalized eigenvalue with 
> the largest real parts, and does not give a warning or error:
>
> n = 10
> C = eye(n)
> A = zeros(n,n)
> A[1] = 100
> A[end] = -100
> @assert eigs(A, C, nev=1, which=:LR)[1][1] == maximum(eigs(A, C)[1])
>
> Am I expected to set nev greater than the number of eigenvalues I truly 
> desire, based on my intuition as a numerical analyst? Or has eigs broken 
> its implicit guarantee?
>
>

Reply via email to