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.