# Does shift-invert method has invertibility issue?

Please note that I have nearly zero background on numerical methods.

I understand the shift invert method as described in SciPy Tutorial

The main argument of the above link is as follows. Suppose we want to solve a generalized eigenvalue problem $$A\mathbf x = \lambda M \mathbf x$$. Then, the shift invert method transforms the problem into $$(A-\sigma M)^{-1} M\mathbf x = \frac{1}{\lambda-\sigma} \mathbf x.$$

My question: What if $$A - \sigma M$$ is not invertible? In particular, I am interested in the case $$M=I$$ and $$\sigma=0$$. Then, the above equation reduces to $$A^{-1}\mathbf x = \lambda^{-1} \mathbf x$$. But, I know that $$A$$ has zero as an eigenvalue, so the above-mentioned problem happens indeed!

The motivation of question is as follows. Using eigsh function in SciPy, I obtained that the eigenvalue with the smallest magnitude is of order $$10^{-4}$$, but it is supposed to be zero!

I used $$\sigma=0$$ in the eigsh function parameter, and my matrix is sparse Hermitian with size $$10000\times 10000$$.

• It appears to me that the problem you want to solve can be written as $A\mathbf{x} = \lambda \mathbf{x}$. Apr 24, 2021 at 15:02
• @nicoguaro Yes. But the matrix is very large and sparse, and I only want the eigenvalues near 0. In this case, the eigsh function is appropriate and the document says that eigsh function uses the shift invert method. This is the motivation of my question. Apr 24, 2021 at 15:24
• the singularity should be taken care of by the library. That the result is $10^-4$ probably has more to do with the convergence tolerance. Apr 24, 2021 at 15:51
• @Thjis Steel Well, sadly even if I set tol=1e-15, the eigenvalue is order of $10^{-4}$. Actually, setting tol=1e-6 and tol=1e-15 give identical results. Apr 24, 2021 at 15:59
• You can find a summary of approaches at biba1632.gitlab.io/code-aster-manuals/docs/reference/… , if you have the patience. Search for "shift". Apr 24, 2021 at 20:45