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}}
>
>