I have a large sparse matrix and would like to compute its interior eigenvalues (i.e., the eigenvalues of smallest magnitude). The matrix is large enough that using the LU decomposition (x = A\b) to solve a linear system involving the matrix results in an out-of-memory error. Since 'eigs' calls the ARPACK library, I would instead like to solve for the interior eigenvalues with the following approach:
- Create a function to apply a "shift" of the matrix (A – s*I),
- Call 'eigs', specifying 'sm' as the value of the input 'sigma' to compute the smallest eigenvalue of the shifted matrix (therefore getting the interior eigenvalues of A), but
- Specify "regular mode" for ARPACK (that is, the inverse-free method that ARPACK provides) to avoid the out-of-memory error.
However, the 'sm' option for 'eigs' assumes that the user-supplied function returns A\x rather than A*x. How can I force 'eigs' to use the inverse-free method in ARPACK?
Best Answer