The eigs-function returns incorrect eigenpairs in several cases for generalized eigenvalue problems. The returned eigenvectors are almost zero in norm and the returned eigenvalues are wrong.
I think this is more or less the same problem as the bugs reported in the comments of #24668, i.e. it may be related to requirements on symmetry or positive definiteness of B in ARPACK. ARPACK does indeed try to B-normalize the vectors (as @antoine-levitt points out) and it works in this example when B is posdef:
Computing the norms of the eigenvectors is anyway cheap in comparison to all operations in ARPACK, so one could consider sanity checking that as default behaviour.
It's a standard stable installation:
julia> versioninfo()
Julia Version 0.6.3
Commit d55cadc350 (2018-05-28 20:20 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Core(TM) i7-4600U CPU @ 2.10GHz
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
LAPACK: libopenblas64_
LIBM: libopenlibm
LLVM: libLLVM-3.9.1 (ORCJIT, haswell)
The
eigs
-function returns incorrect eigenpairs in several cases for generalized eigenvalue problems. The returned eigenvectors are almost zero in norm and the returned eigenvalues are wrong.Also, the values in
d
are not eigenvalues:I think this is more or less the same problem as the bugs reported in the comments of #24668, i.e. it may be related to requirements on symmetry or positive definiteness of
B
in ARPACK. ARPACK does indeed try to B-normalize the vectors (as @antoine-levitt points out) and it works in this example when B is posdef:Computing the norms of the eigenvectors is anyway cheap in comparison to all operations in ARPACK, so one could consider sanity checking that as default behaviour.
It's a standard stable installation: