I have a matrix $J$, and I know there are 3 existing zero eigenvalues and their eigenvectors. I want to detect if there is one extra eigenvalue to go cross zero (if it is zero, its eigenvalue will rotate to the range of previous zero eigenvectors, and the matrix will be defective!).
I can do QR decomposition to the zero eigenvectors and construct a orthonormal basis $N$ for their Null space, then I can project the matrix $J$ to the null subspace as $N^TJN$.
$\det(N^TJN)$ can tell me if there is another eigenvalue being zero.
However, if the $J$ matrix is sparse and its size is large, the cost is too high.
I tried to use ARPACK's subroutines with
which = 'LR' to find the largest real part of eigenvalue. However, it does not work well with defective matrix.
The background is chemical kinetics.