MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Eigensystem applied to a unitary matrix crashes Mathematica 4.

  • To: mathgroup at smc.vnet.net
  • Subject: [mg21401] Re: Eigensystem applied to a unitary matrix crashes Mathematica 4.
  • From: sidles at u.washington.edu (John A. Sidles)
  • Date: Tue, 4 Jan 2000 02:12:33 -0500 (EST)
  • Organization: University of Washington, Seattle
  • References: <831tqg$fmh@smc.vnet.net> <83ncc5$5ph$4@dragonfly.wolfram.com> <844cf2$jp2@smc.vnet.net> <84mb3i$h9f@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

In article <84mb3i$h9f at smc.vnet.net>,
Jos Bergervoet  <bergervo at iaehv.iae.nl> wrote:
>John A. Sidles <sidles at u.washington.edu> wrote:
>>   ...
>> Eigensystem[] documentation might reasonably be revised to
>> be a little more forthcoming about these behaviors, which
>>   ...
>
>Is this a problem only when the matrix is (near) degenerate?
>Or, more precisely, if the eigenvalues are different by many
>significant digits, can I be sure then that Eigensystem[] will
>return orthogonal vectors?
>
>> over the years have taken so many users by surprise.
>
>And it is only to avoid any more surprises that I try to find
>out what the exact behavior is.
>
>-- Jos
>

The following Eigensystem[] behaviors are legal, i.e., consistent
with the Mathematica documentation.  Which behaviors *actually*
occur, I am less certain; I only know the ones that have been
reported on this newsgroup!

(1) Matrix non-degenerate (eigenvalues all different)

Eigensystem[] should return eigenvalues that are the same
on every call.  But eigenvectors can vary call-to-call
by an arbitrary complex coefficient.

(2) Matrix degenerate (two or more eigenvalues identical
to within numerical precision.

Eigensystem[] should return eigenvalues that are the same
on every call.  But eigenvectors can vary call-to-call
by an arbitrary complex coefficient, and in addition the
eigenvectors corresponding to degenerate eigenvalues
can "mix" by arbitrary amounts.

(3) Matrix real and Hermitian with degenerate eigenvalues

This is a special but extremely common case that often breaks
quantum computation code -- as many scientific users of 
mathematica have found out the hard way!.

Almost always, scientific users want and expect real orthonormal
eigenvectors.  And almost always, Eigensystem[] returns what the
user expects.  But about one time in 1000, Eigensystem[] will
silently return complex non-orthonormal eigenvectors --- this 
behavior is completely legal!  It is your responsibility to
recognize this condition, and fix it via, e.g.,  Gram-Schmidt
orthogonalization.  Otherwise your Mathematica code will break!

Mathematica helpers, I know you read this news group.  What
the fastest and most efficient way to implement a Gram-Schmidt
fix for large eigensystems?  I frequently work with 250x250
real symmetric matrices, and have never yet found an efficient
Gram-Schmidt implementation within the Mathematica package. 


  • Prev by Date: Re: Factor MatrixForm
  • Next by Date: Colorimetrical-exact color rendering with mathematica?
  • Previous by thread: Re: Eigensystem applied to a unitary matrix crashes Mathematica 4.
  • Next by thread: Re: Eigensystem applied to a unitary matrix crashes Mathematica 4.