Re: Eigenvectors of a Complex Hermitian Matrix
- To: mathgroup at smc.vnet.net
- Subject: [mg13607] Re: Eigenvectors of a Complex Hermitian Matrix
- From: sidles at u.washington.edu (John Sidles)
- Date: Fri, 7 Aug 1998 03:08:10 -0400
- Organization: University of Washington, Seattle
- References: <002101bdbca6$e2a37c80$f6ed4c86@pbuech7.mpae.gwdg.de> <6pui5e$6s3@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
In article <6pui5e$6s3 at smc.vnet.net>, Gerhard J. Theurich <theurich at mrl.ucsb.edu> wrote: > >That's actually where the problem came from. I am currently writting on >a program that needs to diagonalize some matrices and I am using >Eispack to do it. Eispack returns the correct unitary transform but out >of curiosity I checked with Mathematica and got strange results. Now I >was wondering what I did wrong. There are a lot of things that can go wrong, but there is one undocumented "feature" of the Mathematica routine "EigenSystem[]" that you need to check for. Namely, if an input matrix is real, symmetric, and nonsingular, the Eigensystem[] will *usually* return real eigenvectors and real eigenvalues. But don't count on it! Sporadically, about one time in 500, Eigensystem[] will return complex eigenvectors. If you don't anticipate this behavior, it will mess up your unitary transforms. This behavior only occurs when two eigenvalues are degenerate, as is typically the case when a physical system has an underlying symmetry. The easiest fix seems to be: (1) check to see if the returned eigenvectors are complex. (2) if they *are* complex, then follow one of two fixes (a) take linear combinations of the degenerate complex eigenvectors to construct the desired real eigenvectors (this is always possible, but it is computationally awkward) (b) slightly perturb the input matrix by an amount comparable to machine precision. Empirically, this will yield real eigenvectors in almost all cases -- giving the same result as strategy (a) but with much less programming. I have discussed this behavior with the moderators of this group, they have agreed that it occurs and have reproduced it on various machines. Furthermore, we all agreed that it is *not* an error, and does not need to be fixed -- it is easy to guard against once you know that it can occur, and after all, complex eigenvectors *are* mathematically proper eigenvectors of real symmetric matrices, even if you are not expecting them. Dr. Lichtblau, what's the story -- did this behavior ever get documented on the Mathematica help pages?