The matrix
Clear[a,B,d,j,M];
m = {{B/2 - d - j/2 + a, (Sqrt[2]*j)/2, M}, {(Sqrt[2]*j)/2, B/2 + a,
0}, {M, 0, (-3*B)/2 - d + j/2 + a}};
has eigenvalues determined by the characteristic polynomial of (maximal) degree 3. In the absence of any other information, we get three Root
objects as the eigenvalues, which is Mathematica's way of preserving all the information necessary to provide an arbitrarily precise answer to the question what the roots of the characteristic polynomial of m
are.
By itself, m
is not guaranteed to have real eigenvalues unless you specify some additional properties of the variables. In particular, if you choose them to be real then m
is real-symmetric and therefore has real eigenvalues. This doesn't affect the form of the Root
solutions, but it may be important for other test that may be performed in your calculations.
For example, if you ask whether m
is hermitian,
HermitianMatrixQ[m]
(* ==> False *)
which means the hermiticity is not recognized because it is not explicit in the form of the components of m
. To maintain the symbolic form of the matrix and still have this last test yield True
, you can do this:
m1 = m /. Map[(# -> Re[#]) &, Variables[m]]
(*
==> {{Re[a] + Re[B]/2 - Re[d] - Re[j]/2, Re[j]/Sqrt[2],
Re[M]}, {Re[j]/Sqrt[2], Re[a] + Re[B]/2, 0}, {Re[M], 0,
Re[a] - (3 Re[B])/2 - Re[d] + Re[j]/2}}
*)
HermitianMatrixQ[m1]
(* ==> True *)
The test HermitianMatrixQ
, and (to my knowledge) all test functions ending in Q
, inspect the explicit form of the argument, and by giving all variables the Head
Re
I make sure this is recognized.
This also allows you to get the expected answer from
Simplify[ConjugateTranspose[m1] == m1]
(* ==> True *)
whereas this is not true for m
.
There are in fact algorithms that can find the roots of a cubic polynomial without using complex numbers, assuming that three real roots are known to exist. This is based on trigonometric identities. This is where it may be useful to have specified symbolically that the matrix has only real entries, as I did above.