I have also encountered this issue and it occurs also for small Sparse matrices.
In order to identify whether the eigenvalues supplied by the Arnoldi algorithm are degenerate or not I deform the matrix by adding to it a diagonal matrix with random elements that are about 5-6 orders of magnitude less than the original matrix. This usually slightly lifts the degeneracy so that the algorithm is able to identify the extra eigenvalues. Here is an example:
SeedRandom[111];
n = 100;
rC = SparseArray[
Transpose[{RandomInteger[{1, n}, n], RandomInteger[{1, n}, n]}] :>
RandomComplex[],
{n, n}] (* random complex n x n sparse matrix *) ;
rH = rC + ConjugateTranspose[rC] (* random hermitian n x n sparse matrix *) ;
M = ArrayFlatten[{{rH, 0}, {0, rH}}] (* M has doubly degenerate eigenvalues *) ;
Chop[Eigenvalues[M, 4]] (* Arnoldi eigenvalues *)
Chop[Eigenvalues[
M + SparseArray[Band[{1, 1}] :> RandomReal[], Dimensions[M]]/10.^6,
4]] (* Arnoldi eigenvalues after adding a small random diagonal matrix *)
Eigenvalues[Normal[M]][[1 ;; 4]] (* exact eigenvalues *)
which gives
{2.74461, -2.66169, 2.60291, -2.52665} (* Arnoldi eigenvalues *)
{2.74462, 2.74462, -2.66169, -2.66169} (* Arnoldi eigenvalues after adding a small random diagonal matrix *)
{2.74461, 2.74461, -2.66169, -2.66169} (* exact eigenvalues *)
"Shift"
in the suboptions of the Arnoldi method can help (seeMethod
subsection of the documentation ofEigensystem
). One time, I observed adding"Shift"->0
or"Shift"->None
alreayd helped for some reason... $\endgroup$Eigensystem
see also the discussion here. $\endgroup$