# No eigenvectors coming for a very simple* matrix

I have a question regarding the same as Problem with Eigenvectors when given a matrix containing approximate numbers and symbols
and
Why won't Mathematica obtain eigenvectors for this symmetric matrix?

I saw these well written answers but I couldn't seem to get my answer from there, I don't know why.

I am trying to find the eigenvalues of this matrix:

mat[k_]={{-1. (1/2 E^((0. - 1.1708 I) + I k) - 1/2 E^((0. + 1.1708 I) + I k)),
0. - 0.389418 I, 0}, {0, 0,
0. - 1. I}, {-0.389418, (0. -
1. I) (1/2 E^((0. - 1.1708 I) - I k) -
1/2 E^((0. + 1.1708 I) - I k)), 0}};
Eigenvectors[mat[k]];


Eigenvectors::eivec0: Unable to find all eigenvectors.

Even though, the equations are cubic, I am not getting the solution.

Version: 11.1.1 for Linux x86 (64-bit) (April 18, 2017)

• It seems to work with Eigenvectors[mat[k], Cubics -> True] Nov 21 '17 at 13:46
• Thanks @nikie. Are these eigenvectors exact?
– L.K.
Nov 21 '17 at 13:57
• As far as I understand the documentation, the eigenvectors are exact using exact algebra, but if you evaluate them using machine precision, you might get numerical errors. I.e. larger errors than using Eigenvectors[some numerical matrix] Nov 21 '17 at 14:25

With a bit of simplification it works.

The main two steps i added are Rationalize to make the matrix purely symbolic, which is good if we want the result to be fully symbolic as well and ExpToTrig, which simplifies the expressions in general, making the Eigenvectors computation faster. Notice that //MatrixForm is outside the (mat=...) Set call because it's just for display purposes and shouldn't be part of the mat expression.

(mat = {{-1. (1/2 E^((0. - 1.1708 I) + I k) - 1/2 E^((0. + 1.1708 I) + I k)), 0. - 0.389418 I, 0},
{0, 0, 0. - 1. I},
{-0.389418, (0. -  1. I) (1/2 E^((0. - 1.1708 I) - I k) - 1/2 E^((0. + 1.1708 I) - I k)), 0}
} //Rationalize //ExpToTrig //FullSimplify) // MatrixForm

Eigenvectors[mat]//FullSimplify//MatrixForm


which gives the eigenvectors in terms of Root objects. If you like explicit algebraic expressions, you can add the Cubics->True option to the call to Eigenvectors like @nikie suggested.

• Thanks for the answer @Thies. Just the same question(sorry for repetition), are these eigenvectors exact, when using Cubics -> True?
– L.K.
Nov 21 '17 at 14:12
• @L.K. Yes, in both cases they are exact. The Root[] representation is just more compact and more general than the explicit algebraic Cubics, but they are both exact symbolic representations. The only inaccuracy comes from the floating point input data, e.g. -1.1708. If you can replace those floating point constants with symbolic expressions, that would be even better. Nov 21 '17 at 14:47