MathGroup Archive 1995

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

Search the Archive

Re: Strange answer from Eigensystem[]!

  • To: mathgroup at christensen.cybernetics.net
  • Subject: [mg847] Re: Strange answer from Eigensystem[]!
  • From: danl (Daniel Lichtblau)
  • Date: Wed, 26 Apr 1995 00:14:17 -0400
  • Organization: Wolfram Research, Inc.

  I am not certain whether this is due to bugs or honest limitations in  
the algorithm. When you have multiple eigenvalues with a matrix of machine  
numbers, expect trouble.
  You can work around some of the damage as follows.
Abig = N[Rationalize[A, 0], 25];
{val, vec} = Eigensystem[Abig];
Cvec = Chop[vec];

Then
Table[{A.Cvec[[i]],val[[i]]*Cvec[[i]], A.Cvec[[i]]==val[[i]]*Cvec[[i]]},  
{i,4}]
will return all four as True (and nonzero).

  I notice that an older version of Mathematica seems to do better. We  
will look into this.

  Daniel Lichtblau, WRI


In article <3n4q5b$qpk at news0.cybernetics.net> glandry at aol.com (GLandry)  
writes:
> I have a problem w/ the eigenvectors not being correct for
> the simple nonsingular matrix A (shown below).  All 
> eigenvalues seem correct.  Two eigenvectors check, 2 don't..
> 
> WHY!!??
> 
> Also, using Mathcad, I get the same eigenvalues, but two 
> repeated eigenvectors (rounding off 10^-4 parts):
>     {.463I,0.117-0.773I,0.354+0.54I,0.212}
>     {-.463I,0.117+0.773I,0.354-0.54I,0.212}
> 
> The bizarre thing to me is these eigenvectors seem to check 
> too!?
> 
> Help!  I must be missing some basic degeneracy.  Unfortunately,
> so in Mma.
> 
> ****************************************
> Gary Landry
> glandry at aol.com
> eelandry at utacnvx.uta.edu
> ________________
> The University of Texas at Arlington
> Department of Electrical Engineering
> Box 19016
> Arlington, TX 76019
> ****************************************
> 
> A={{0,0,0,1},{0,0,-1,0},{0,0.21,0,0},{-.21,0,0,0}};
> 
> MatrixForm[A]
> 
> 0       0       0       1
> 0       0       -1      0
> 0       0.21    0       0
> -0.21   0       0       0
> 
> {val,vec}=Eigensystem[A];
> 
> (Table[{A.vec[[i]],val[[i]] vec[[i]],
>         A.vec[[i]]==val[[i]] vec[[i]]},{i,4}])
> 
>              -17
> {{{4.17175 10    + 0. I, 0. + 0.416598 I, 0.190909 + 0. I, 
>  
>     0. + 0. I}, {0. + 0. I, 0. + 0.416598 I, 0.190909 + 0. I, 
>  
>                    -17
>     0. + 1.91173 10    I}, False}, 
>  
>               -17
>   {{4.17175 10    + 0. I, 0. - 0.416598 I, 0.190909 + 0. I, 
>  
>     0. + 0. I}, {0. + 0. I, 0. - 0.416598 I, 0.190909 + 0. I, 
>  
>                    -17
>     0. - 1.91173 10    I}, False}, 
>  
>                    -312
>   {{0. + 1.95628 10     I, -1. + 0. I, 0. + 0. I, 0. + 0. I}, 
>  
>    {0. + 0. I, 0. + 0. I, 0. - 0.458258 I, 0. + 0. I}, False}, 
>  
>                    -312
>   {{0. - 1.95628 10     I, -1. + 0. I, 0. + 0. I, 0. + 0. I}, 
>  
>    {0. + 0. I, 0. + 0. I, 0. + 0.458258 I, 0. + 0. I}, False}}
> 
> Chop off "little" values, then the FIRST two work as solutions....
> 
> Cvec=Chop[vec];
> (Table[{A.Cvec[[i]],val[[i]] Cvec[[i]],
>         A.Cvec[[i]]==val[[i]] Cvec[[i]]},{i,4}])
> 
> {{{0. + 0. I, 0. + 0.416598 I, 0.190909 + 0. I, 0. + 0. I}, 
>  
>    {0, 0. + 0.416598 I, 0.190909 + 0. I, 0}, True}, 
>  
>   {{0. + 0. I, 0. - 0.416598 I, 0.190909 + 0. I, 0. + 0. I}, 
>  
>    {0, 0. - 0.416598 I, 0.190909 + 0. I, 0}, True}, 
>  
>   {{0., -1., 0., 0.}, {0, 0, 0. - 0.458258 I, 0}, False}, 
>  
>   {{0., -1., 0., 0.}, {0, 0, 0. + 0.458258 I, 0}, False}}
> 
> 


  • Prev by Date: Re: GridLines in LogLogPlot
  • Next by Date: Re: Adding identification marks to a Plot
  • Previous by thread: Strange answer from Eigensystem[]!
  • Next by thread: Mathematica in Calculus Workshop