MathGroup Archive 1999

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

Search the Archive

Re: Eigenvalue Problem

  • To: mathgroup at smc.vnet.net
  • Subject: [mg16908] Re: [mg16894] Eigenvalue Problem
  • From: Andrzej Kozlowski <andrzej at tuins.ac.jp>
  • Date: Tue, 6 Apr 1999 01:27:34 -0400
  • Sender: owner-wri-mathgroup at wolfram.com

There is really no error here and probably no way to radically change the
way Mathematica behaves. In your case Mathematica  gives solutions which
look like complex expressions, but actually they will always give real
values when real numbers are substituted for a, b and c (actually this is
only true up to very tiny imaginary quantities, which appear in numerical
computations and which can be got rid of using the Chop command.). To see
this try evaluating the expression 

In[1]:=
m =     {{10 a, 0, b, 0, 0, 0},
          {0, -2 a, 0, c, 0, 0},
          {b, 0, -8 a, 0,c, 0},
          {0, c, 0, -8 a, 0,b},
          {0, 0, c, 0, -2 a, 0},
          {0, 0, 0,b, 0, 10 a}};

In[2]:=
Eigenvalues[m]/.{a->Random[],b->Random[],c->Random[]}//Chop
Out[2]=
{3.96643,3.96643,-3.21306,-3.21306,-0.753374,-0.753374}

You will always get real eigenvalues however many times you evaluate
this. However, I think it is, in general, impossible  in cases such as
yours  to make sure one obtains  expressions not containing complex
numbers. The reason is that in order to find the eigenvalues Mathematica
has to solve the algebraic equation CharacteristicPolynomial[m]==0. To do
this it uses general algorithms for solving polynomial equations which
(in the cases in which roots can be expressed by radicals) usually give
answers involving complex numbers. Even telling Mathematica that a,b, and
c are real, by using ComplexExpand for example,  won't help much. In
simple cases Mathematica can tell that a general expression which "looks"
complex is actually real. For example if 
In[6]:=
v=I*Sqrt[-a^2]

Then 
In[8]:=
ComplexExpand[v]
Out[8]=
       2
-Sqrt[a ]

However, consider a somewhat more complicated example
In[9]:=
w=I*Sqrt[2a-2-a^2]
Out[9]=
                   2
I Sqrt[-2 + 2 a - a ]

In[10]:=
ComplexExpand[w]
Out[10]=
                2 2 1/4     1                 2
I ((-2 + 2 a - a ) )    Cos[- Arg[-2 + 2 a - a ]] - 
                            2
               2 2 1/4     1                 2
 ((-2 + 2 a - a ) )    Sin[- Arg[-2 + 2 a - a ]]
                           2
The point is that Mathematica does not notice that -2+2a-a^2 is always
negative for all real a, so it does not give you the answer: -Sqrt[a^2-2a
+2].  There is no way, as far as I can tell, to tell Mathematica to do
this. This sort of problems (and similar ones) will quite often come up
when Mathematica is solving algebraic equations and I do not think that
at present there is any general  way to deal with them.

On Mon, Apr 5, 1999, Peter Haesser <phuesser at bluewin.ch> wrote:

>Hello everybody
>
>I am trying to solve the eigenvalue problem for the following matrix:
>
>m =     {{10 A, 0, B, 0, 0, 0},
>          {0, -2 A, 0, C, 0, 0},
>          {B, 0, -8 A, 0, C, 0},
>          {0, C, 0, -8 A, 0, B},
>          {0, 0, C, 0, -2 A, 0},
>          {0, 0, 0, B, 0, 10 A}}
>
>which is symmetric. Now mathematica returns some complex eigenvalues
>which is not
>possible for a real, symmetric matrix. Can anybody help me ? Maybe the
>error occurs because
>mathematica means that the coefficients are complex but how can I make
>them real ?
>
>Thank's in advance for any help.
>
>
>    Peter Huesser
>


Andrzej Kozlowski
Toyama International University
JAPAN
http://sigma.tuins.ac.jp/
http://eri2.tuins.ac.jp/



  • Prev by Date: Time Series/Kalman Filter
  • Next by Date: Permutations & Computer capacity
  • Previous by thread: Re: Eigenvalue Problem
  • Next by thread: Re: Eigenvalue Problem