I notice in the following example that wrong smallest 2 eigenvalues are resulted if calculating from a sparse matrix object. But it gives correct result if we - calculate the smallest 3,4,... eigenvalues from the sparse matrix - calculate any smallest eigenvalues from the corresponding normal matrix Why is this and any remedy? The minimal example I found can be [downloaded as a small notebook of 200kb](https://www.dropbox.com/s/rqn0u3zlc23fdqo/mymat.nb?dl=0) or obtained from [Pastebin](https://pastebin.com/PpDfY3EQ) because the 104×104 matrix exceeds the length limit of this site. Import["https://pastebin.com/raw/PpDfY3EQ", "Package"]; mysparsemat = mymat; mymat = Normal[mysparsemat]; m = 2; Reverse@First[Eigensystem[mymat, -m]] Reverse@First[Eigensystem[mysparsemat, -m]] m = 4; Reverse@First[Eigensystem[mymat, -m]] Reverse@First[Eigensystem[mysparsemat, -m]] The result of the above code is {-0.712477 + 1.02863*10^-16 I, 0.712477 + 1.46577*10^-16 I} {0.712477 - 1.44294*10^-11 I, 0.712656 - 2.12258*10^-11 I} {-0.712477 + 1.02863*10^-16 I, 0.712477 + 1.46577*10^-16 I, -0.712656 - 1.05578*10^-16 I, 0.712656 + 6.49144*10^-16 I} {-0.712477 - 5.10777*10^-10 I, 0.712477 - 5.44863*10^-12 I, 0.712656 + 3.10198*10^-11 I, -0.712656 + 3.64677*10^-10 I} So the wrong 2nd smallest eigenvalue is actually the 3rd or 4th smallest one. (The eigenvalues should be real and doubly degenerate as expected from the original problem's nature).