I just need to calculate the largest real part of eigenvalues of a Jacobian which is highly non-normal and singular. Most of the eigenvalues are negative, and some of them are positive but near to zero relatively. I want to find the largest one except the zeroes. And I do not need the eigenvectors.
However, there are several zero eigenvalues. So I want to know if it is worthy to do some transformation to cancel the known zero eigenmode (similar transform to the null space of the modes). Or I can choose to calculate the first few eigenvalues directly.
Here is the sample matlab code to test how much is the cost to calculate first K eigenvalue with largest real part of a random matrix.
N=3000; % N hundreds to thousand
M=rand(N,N)+eye(N); % shift to avoid zero
K=8; % K is less than 10
t = zeros(K,1);
for k=1:K
f=@()(eigs(M,k,"largestreal"));
t(k) = timeit(f);
end
figure
plot(t)
ylabel("time(s)")
xlabel("k")
However, the plot output is wavy and non-monotonic.
Is there any analysis on this problem? I read the ARPACK's document, there is no detail of how the it is implemented.