2
$\begingroup$

WHAT I FACE: I'm dealing with a complex matrix of very high condition number and I have to solve the eigenvalue and eigenfunction of it. But in Matlab, I got the problem that the results are not converging with increasing resolution number, so these results are not reliable.

WHAT I NEED: I in fact only need to get one eigenvalue and its associated eigenfunction (largest real part), so I tried with eigs in Matlab, but it says that "znaupd did not find any eigenvalues to sufficient accuracy", even though I have relaxed the tolerance to a very high value.

WHAT I HAVE TRIED: As I said, I have tried eig and eigs in Matlab, but these two commands can't give me accurate results.

What should I do if I want to solve this kind of problem (to get one eigenvalue of a very-high-condition-number matrix)? Should I move to other solvers other than Matlab? I think Matlab is already the best we can do, right?

Thanks. Any discussion will be appreciated.

By the way, I'm using the collocation spectral method for the grid discretization.

$\endgroup$
  • $\begingroup$ Is the largest real part eigenvalue also the largest modulus eigenvalue, strictly? If so, then power iteration will converge, albeit perhaps very slowly. Either way, if you have an estimate for the desired eigenvalue, then inverse iteration (or a variant; there are many such variants) may be useful. $\endgroup$ – Ian May 4 '15 at 22:29
  • $\begingroup$ No, it's not. It's in fact near to zero. Your suggestion of inverse iteration might work in my case. I am pretty sure that the power iteration method will work in the case of real matrix. But are you sure it will also work for the complex matrix? $\endgroup$ – jengmge May 5 '15 at 9:38
  • $\begingroup$ And do you know what's the state of the art of solving the matrix of very high condition number? It's hard to solve this problem accurately. $\endgroup$ – jengmge May 5 '15 at 9:42
  • $\begingroup$ The convergence of power or inverse iteration doesn't use anything about real vs. complex, the idea is based entirely on the relationship between matrix norms and eigenvalues. $\endgroup$ – Ian May 5 '15 at 12:31
  • 1
    $\begingroup$ As for the state of the art, there is really no such thing. High condition number problems tend to require problem-dependent methods. In particular, in many hard problems arising in applications, the matrix actually has a great deal of prior structure, which enables good preconditioning techniques. $\endgroup$ – Ian May 5 '15 at 12:32
0
$\begingroup$

Don't know if this would work with a complex matrix, but partial pivoting may help out (LU factorization).

lu(A)

http://www.mathworks.com/help/matlab/ref/lu.html

$\endgroup$
  • $\begingroup$ The "LU" eigenvalue algorithm is a pretty awful eigenvalue algorithm in most cases, for many reasons including instability. $\endgroup$ – Ian May 4 '15 at 22:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.