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