Search code examples
matlabsparse-matrix

Matlab eigs fail with large matrix


In matlab, I use function 'eigs()' to get a few (about 10) of the smallest eigen vectors of a large matrix (5000x5000). Like this:

[V,UU] = eigs(A, 10,'sm');

After some trying, I found that the largest size of matrix 'eigs()' is able to deal with is something between 1300 and 1500.

With bigger matrices, it pops up error message like '(A-sigma*I)is singular. The shift is an eigenvalue.' or something about 'APPAPK'(when using 'sr') in the Command Window.

I got some info about these errors from google, but they are about some inner code or theorem(sounds like one) which I don't quite understand.

So, I want to know if there are any tricks with eigs to make it work with large matrix?

Thanks for your time and help.


Solution

  • You can try to add an identity matrix with the same size like: A = A + k*eye(size(A,1)); here k is an experimental coefficient smaller than 1. Doing this guarantees that matrix A is nonsingular