Re: Eigensystem sometimes returns non-orthonormal
- To: mathgroup at smc.vnet.net
- Subject: [mg96864] Re: [mg96805] Eigensystem sometimes returns non-orthonormal
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Thu, 26 Feb 2009 07:57:13 -0500 (EST)
- References: <200902250904.EAA15732@smc.vnet.net>
Yen Lee Loh wrote: > Dear Mathematica users, > > In Mathematica 7.0.0 (for Linux), calling Eigenvectors[H] or Eigensystem[H] > for a numerical Hermitian matrix H sometimes returns eigenvectors that are > not orthonormal. > This happens when some eigenvalues are degenerate. (I can supply example > code that illustrates the problem, if necessary.) > > This is not really a bug -- the documentation for Eigensystem[] doesn't make > any guarantees of orthonormality -- but nevertheless it is an annoying part > of Mathematica's design. > This issue has been raised 11 years ago ( > http://forums.wolfram.com/mathgroup/archive/1998/Mar/msg00418.html ), but > that post is corrupted! (Surely Wolfram isn't resorting to censorship?) A non-corrupted version is located at the URL below. http://forums.wolfram.com/mathgroup/archive/1998/Mar/msg00425.html Note that the behavior in that report was of a more serious nature than that which you describe (eigenvectors sometimes had complex values). > I > was hoping that in Mathematica 7 I would be able to write something like > > Eigensystem[H, Method->"LAPACK-ZHEEVR"] > > or > > Eigensystem[H, OrthonormalizeEigenvectors->True] > > but no such options seem to exist. One workaround is to apply > Orthogonalize[] to the matrix of eigenvectors, but the documentation for > Orthogonalize[] doesn't guarantee that the orthonormalization will only > occur within the "degenerate subspace". So one has to resort to complicated > fixes (e.g., http://arxiv.org/pdf/hep-ph/9607313 ). > Does anyone have a simpler solution? (For example, is there an easy way to > call LAPACK'S ZHEEVR routine, which guarantees orthornormal eigenvectors, > from Mathematica?) > > Thanks a lot. > Yen Lee Loh If you apply QRDecomposition to the eigenvectors, then I believe the Q part will provide what you are looking for. Daniel Lichtblau Wolfram Research
- References:
- Eigensystem[hermitianMatrix] sometimes returns non-orthonormal
- From: Yen Lee Loh <yloh@mps.ohio-state.edu>
- Eigensystem[hermitianMatrix] sometimes returns non-orthonormal