[Math] Second smallest eigenvalue of matrix

eigenvalues-eigenvectorsgraph-laplacianlinear algebraMATLAB

The matrix is banded and symmetric, and is positive definite. It's very similar to a Laplacian matrix, though it's slightly modified, signs are flipped and every value is divided by the same constant. I need to find the smallest two eigenvalues in MATLAB, without using the eig() function.

Since I know it's positive definite and symmetric, I coded Rayleigh Quotient Iteration with an initial guess for the smallest eigenvalue as 0. So, I have the smallest eigenvalue and it's respective eigenvector. However, I'm not sure what to do next.

I can't transform matrix to send the smallest eigenvalue to exactly 0, since the value for the smallest eigenvalue isn't exact. The matrix is also extremely large and sparse, so I'd like to avoid taking the inverse of the matrix since that would be expensive.

Any tips would be appreciated. Thanks!

Best Answer

Matlab has eigs to give the largest or smallest few eigenvalues of a matrix. See the documentation. The sm option takes the matrix inverse, but the sa option does not, which might be more efficient in your case.