Re: Mathematica 6 obtains imaginary eigenvalues for a Hermitian matrix
- To: mathgroup at smc.vnet.net
- Subject: [mg86111] Re: [mg86010] Mathematica 6 obtains imaginary eigenvalues for a Hermitian matrix
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Sun, 2 Mar 2008 13:55:39 -0500 (EST)
- References: <200803010947.EAA23583@smc.vnet.net>
In fact, for your matrix exact computation with Eigenvalues gives a
wrong answer. Thus this is not a numerical problem, as often happens
in such cases, but something much more basic.
mat = {{-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}};
Take the "largest" eigenvalue:
eig = First[Eigenvalues[mat, 1]];
f[x_] = CharacteristicPolynomial[mat, x]
N[f[eig], 10]
-1.8696095421628027977`10.111112547559953*^10 -
8.339392668664626899`9.760496055115645*^9*I
which is far from zero.
Another related point is that setting the Options Cubics->True should
give a radical expression, in cases when the Characteristic Polynomial
can be factored into linear factors, quadratics and quadratics as is
the case here:
Factor[f[x]]
x*(x + 4)^2*(x^2 + 4*x - 24)*(x^3 + 8*x^2 - 32)^2*(x^3 + 8*x^2 - 24*x
- 128)
But actually using this options makes no difference. It looks very
much like Eigenvalues is solving the wrong polynomial of the same
degree since
g = MinimalPolynomial[eig, x]
17006112*x^14 + 612220032*x^13 + 8162933760*x^12 + 40814668800*x^11 -
81629337600*x^10 - 1671768834048*x^9 -
4667021328384*x^8 + 11702381838336*x^7 + 76901366366208*x^6 +
42669909636920*x^5 - 337697299646488*x^4 -
551524516377720*x^3 + 576589503454408*x^2 +
260729243794329*x + 2600447009874406
This is a prime polynomial and it is not clear how, if at all, it is
related to the characteristic polynomial.
Andrzej Kozlowski
On 1 Mar 2008, at 10:47, Sebastian Meznaric 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:
- Mathematica 6 obtains imaginary eigenvalues for a Hermitian matrix
- From: Sebastian Meznaric <meznaric@gmail.com>
- Mathematica 6 obtains imaginary eigenvalues for a Hermitian matrix