• 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