Stephen Gant
Stephen Gant

Reputation: 1

Why is there no equivalent of GEEV in scalapack?

I am hoping to find the eigenvalues of a large complex non-hermitian matrix using ScaLAPACK. I cannot seem to find any documentation for such a general eigensolver (presumably the name would be something like PZGEEV). Does anyone know why this method is seemingly unavailable? Is there some kind of mathematical trick I ought to be employing so my diagonalization problem can be solved via existing ScaLAPACK algorithms like PZGESVD, PZHEEV?

I have played around a bit with using PZGESVD alone but this is simply insufficient. The premise of the problem is to take a hermitian matrix and perturb it with interactions that yield a non-hermitian system where the imaginary parts of the eigenvalues have relevant physical meaning. In short, I need those imaginary components of the eigenvalues.

Upvotes: 0

Views: 86

Answers (1)

Stephen Gant
Stephen Gant

Reputation: 1

I am still unsure of why no such method exists beyond the devs simply not getting around to it. That said, I was able to find a workaround. The process is as follows:

  1. Compute a Hessenberg decomposition using PZGEHRD
  2. Compute the Schur decomposition using PZLAHQR, a method which assumes the matrix is in Hessenberg form (thus step 1 as a prerequisite).

The diagonals of the Schur decomposition are the eigenvalues of the matrix. I believe obtaining the eigenvalues can be done as well but it will likely require additional application of basic ScaLAPACK methods to manually solve for them given the obtained eigenvalues.

Upvotes: 0

Related Questions