Smallest, Non-zero Eigevalue of a Sparse Hermitian Matrix Using Matlab's Eigs

528 Views Asked by At

I'm looking for the first $10$ smallest non-zero eigenvalue in a symmetrical, sparse, hermitian Matrix $A_{3000 \times 3000}$. There are also a lot of zero-eigenvalues in the eigenvalue-spectrum which are not of interest.

Matlab's eigs lets me define a sigma (starting point), but the result always gives me some zero-eigenvalues along with my needed eigevalues. (my sigma=1e2). Does someone know how to define this sigma in eigs (or some other function) which allows me to get N eigenvalues higher then my defined sigma?

1

There are 1 best solutions below

12
On

Naive algorithm that could work.

N=10;
(n,m)=size(A);
assert(n==m)
p =sprank(A);
d = eigs(A,n-p+N,'sm');
d=d(d>sigma);

Note

eig need $O(n^3)$ for $n\times n$ matrix, I guess sprank is much faster(I don't know though) and eigs uses Lanczos algorithm, which should cost $O(n^2)$, so I think it is still better then $eig$ even for large p.


U can try to remove the singularity of your matrix, but I guess it won't be much more effective.