Re: Re: Mathematica 6 obtains imaginary eigenvalues for a Hermitian
- To: mathgroup at smc.vnet.net
- Subject: [mg86215] Re: [mg86179] Re: Mathematica 6 obtains imaginary eigenvalues for a Hermitian
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Thu, 6 Mar 2008 02:58:08 -0500 (EST)
- References: <fqb9ai$na0$1@smc.vnet.net> <200803021856.NAA19943@smc.vnet.net> <200803050838.DAA19250@smc.vnet.net> <577CF908-0D8D-437B-863B-00FA3094BF98@mimuw.edu.pl>
Perhaps I should have added that there are good reasons for having both kinds of algorithms: symbolic and numeric. This example illustrates a situation when there is a bug in a symbolic algorithm, but numeric algorithms can also be problematic, particularly when machine precision is used in the presence of numerical instability (ill-conditioning). So, while in this case Eigenvalues[N[matrix]] (numeric) is of course preferable to N[Eigenvalues[matrix]] ("essentially" symbolic) I would not recommend adopting this as a general principle. Andrzej Kozlowski On 5 Mar 2008, at 11:23, Andrzej Kozlowski wrote: > Yes, since it uses quite different algorithm. Generally algorithms > used for numerical solution of equations or various matrix > computations are quite different from (and much faster than) those > used in the symbolic case. > > Andrzej Kozlowksi > > > On 5 Mar 2008, at 09:38, David Reiss wrote: > >> Thanks.... I stand (or sit) corrected. >> >> I note that although N[Eigenvalues[matrix]] does not give correct >> results (with the bug that Daniel Lichtblau explains), >> >> Eigenvalues[N[matrix]] >> >> does indeed work as expected... >> >> --David >> >> >> On Mar 3, 4:48 am, Andrzej Kozlowski <a... at mimuw.edu.pl> wrote: >>> Eigenvalues or characteristic values of a are defined (or rather, >>> can = >> >>> be defined) as the roots of the characteristic polynomial - and it >>> does not matter is the matrix is invertible or not. Indeed, for a >>> nilpotent matrix, such as >>> >>> M = {{-1, I}, {I, 1}} >>> >>> we have >>> >>> In[39]:= Eigenvalues[M] >>> Out[39]= {0, 0} >>> >>> and >>> >>> In[40]:= CharacteristicPolynomial[M, x] >>> Out[40]= x^2 >>> >>> Moreover, the problem has nothing to do with numerical precision >>> because in this case the exact eigenvalues do not satisfy the >>> characteristic polynomial and in fact are the exact roots of a >>> different polynomial of the same degree (as shown in my first post >>> in >>> this thread). Very weird. >>> >>> Andrzej Kozlowski >>> >>> On 2 Mar 2008, at 19:56, David Reiss wrote: >>> >>>> Note that your matrix is not invertible (its determinant is >>>> zero). So= >> >>>> this is the source of your problem... >>> >>>> Hope that this helps... >>> >>>> -David >>>> A WorkLife FrameWork >>>> E x t e n d i n g MATHEMATICA's Reach... >>>> http://scientificarts.com/worklife/ >>> >>>> On Mar 1, 4:57 am, Sebastian Meznaric <mezna... at gmail.com> wrote: >>>>> I have a 14x14 Hermitian matrix, posted at the bottom of this >>>>> message. >>>>> The eigenvalues that Mathematica obtains using the >>>>> N[Eigenvalues[matrix]] include non-real numbers: >>>>> {-9.41358 + 0.88758 \[ImaginaryI], -9.41358 - >>>>> 0.88758 \[ImaginaryI], -7.37965 + 2.32729 \[ImaginaryI], >>>>> -7.37965 - >>>>> 2.32729 \[ImaginaryI], -4.46655 + 2.59738 \[ImaginaryI], >>>>> -4.46655 - >>>>> 2.59738 \[ImaginaryI], 4.36971, 3.21081, -2.32456 + >>>>> 2.10914 \[ImaginaryI], -2.32456 - 2.10914 \[ImaginaryI], >>>>> 2.04366+ 0.552265 \[ImaginaryI], >>>>> 2.04366- 0.552265 \[ImaginaryI], -0.249588 + >>>>> 1.29034 \[ImaginaryI], -0.249588 - 1.29034 \[ImaginaryI]}. >>>>> However, if you do Eigenvalues[N[matrix]] it obtains different >>>>> results >>>>> {-9.09122, -7.41855, -7.41855, -7.2915, 4.33734, -4., -4., >>>>> 3.2915, \ >>>>> -3.24612, -2.38787, -2.38787, 1.80642, 1.80642, 0}. >>> >>>>> These results agree with >>>>> Solve[CharacteristicPolynomial[matrix,x],x]. >>>>> Therefore I assume that the latter are correct. Has anyone seen >>>>> this? >>>>> I am using 6.0.0. >>> >>>>> Here is the matrix: >>>>> {{-6, 0, -Sqrt[3], 0, 0, Sqrt[3], 0, 0, 0, 0, 0, 0, 0, 0}, {0, -6, >>>>> 0, -Sqrt[3], 0, 0, Sqrt[3], 0, 0, 0, 0, 0, 0, 0}, {-Sqrt[3], 0, = >> >>>>> -4, >>>>> 2 (-1/(4 Sqrt[3]) + (3 Sqrt[3])/4), 2 Sqrt[2/3], 0, 0, Sqrt[3], = >> >>>>> 0, >>>>> 0, 0, 0, 0, 0}, {0, -Sqrt[3], >>>>> 2 (-1/(4 Sqrt[3]) + (3 Sqrt[3])/4), -4/3, -(2 Sqrt[2])/3, 0, 0, = >> >>>>> 0, >>>>> Sqrt[3], 0, 0, 0, 0, 0}, {0, 0, 2 Sqrt[2/3], -(2 Sqrt[2])/3, >>>>> 7/3, 0, >>>>> 0, 0, 0, Sqrt[3], 0, 0, 0, 0}, {Sqrt[3], 0, 0, 0, 0, -4, 0, >>>>> 2 (-1/(4 Sqrt[3]) + Sqrt[3]/4), 0, 0, 2 Sqrt[2/3], 0, 0, 0}, {0, >>>>> Sqrt[3], 0, 0, 0, 0, -4, 0, 2 (-1/(4 Sqrt[3]) + Sqrt[3]/4), 0, 0,= >> >>>>> 2 Sqrt[2/3], 0, 0}, {0, 0, Sqrt[3], 0, 0, >>>>> 2 (-1/(4 Sqrt[3]) + Sqrt[3]/4), 0, -14/3, >>>>> 2 (-1/(4 Sqrt[3]) + (3 Sqrt[3])/4), 2 Sqrt[2/3], (2 Sqrt[2])/3, = >> >>>>> 0, >>>>> 0, 0}, {0, 0, 0, Sqrt[3], 0, 0, 2 (-1/(4 Sqrt[3]) + Sqrt[3]/4), >>>>> 2 (-1/(4 Sqrt[3]) + (3 Sqrt[3])/4), -2, -(2 Sqrt[2])/3, 0, ( >>>>> 2 Sqrt[2])/3, 0, 0}, {0, 0, 0, 0, Sqrt[3], 0, 0, >>>>> 2 Sqrt[2/3], -(2 Sqrt[2])/3, -7/3, 0, 0, >>>>> 2 (1/(3 Sqrt[2]) + (2 Sqrt[2])/3), Sqrt[10/3]}, {0, 0, 0, 0, 0, >>>>> 2 Sqrt[2/3], 0, (2 Sqrt[2])/3, 0, 0, -16/3, >>>>> 2 (-1/(4 Sqrt[3]) + (3 Sqrt[3])/4), 2 Sqrt[2/3], 0}, {0, 0, 0, = >> >>>>> 0, 0, >>>>> 0, 2 Sqrt[2/3], 0, (2 Sqrt[2])/3, 0, >>>>> 2 (-1/(4 Sqrt[3]) + (3 Sqrt[3])/4), -8/3, -(2 Sqrt[2])/3, 0}, = >> >>>>> {0, 0, >>>>> 0, 0, 0, 0, 0, 0, 0, 2 (1/(3 Sqrt[2]) + (2 Sqrt[2])/3), >>>>> 2 Sqrt[2/3], -(2 Sqrt[2])/3, 1/2, >>>>> 2 (-Sqrt[5/3]/16 - Sqrt[15]/16)}, {0, 0, 0, 0, 0, 0, 0, 0, 0, = >> >>>>> Sqrt[ >>>>> 10/3], 0, 0, 2 (-Sqrt[5/3]/16 - Sqrt[15]/16), 7/2}} >> >> >
- References:
- Re: Mathematica 6 obtains imaginary eigenvalues for a Hermitian
- From: David Reiss <dbreiss@gmail.com>
- Re: Mathematica 6 obtains imaginary eigenvalues for a Hermitian
- From: David Reiss <dbreiss@gmail.com>
- Re: Mathematica 6 obtains imaginary eigenvalues for a Hermitian