I have a large sparse matrix with the following structure:
It’s 5000×5000 in size. I want to find the 1000 eigenvalues and eigenvectors whose absolute values are closest to zero. The challenge is that the matrix has a large condition number, so to ensure accurate results, I have to use high-precision calculations—which, as you’d expect, makes things extremely slow. Luckily, I came across the following identity:
This identity cuts down on costly high-precision computations (since the matrix on the right is much smaller). So I created a function handle, Afun, that computes M*v for a given input vector v.
But unfortunately, the eigs function only works correctly with a function handle like Afun (where input v returns M*v) when you're looking for the eigenvalues with the largest magnitude—that is, 'largestabs'. I need the ones whose absolute values are closest to zero. Is there a way around this?
Or, setting aside this identity, is there any way to speed up high-precision calculations for large sparse matrices? The current speed is unbearably slow.