# Trying to to replace Root expressions from the output of Eigenvalues by the explicit forms

When I calculate the eigenvalues of the following matrix (H) by using Eigenvalues, I get complex expressions with Root values. How do I find the explicit eigenvalues with the following assumptions

{{J, B, α} ∈ Reals, J > 0, B >= 0,  0 <= α <= π}


My Matrix is

H = {{2 (J + B Cos[α]), B Sin[α], B Sin[α], 0},
{B Sin[α], -2 J, 0, B Sin[α]},
{B Sin[α],0, -2 J, B Sin[α]},
{0, B Sin[α], B Sin[α], 2 (J - B Cos[α])}}; • You could try ToRadicals. Sep 10, 2019 at 11:54
• It works, but what about the assumptions? Sep 10, 2019 at 14:20
• Eigenvalues[H, Cubics -> True] gives the same result as Eigenvalues[H] // ToRadicals Sep 10, 2019 at 23:29

As @b.gates.you.know.what mentions, you can use ToRadicals

Eigenvalues[H] // ToRadicals


but the resultant expression is not so easy to handle. Even after trying to simplify it under the condition you offer, it helps little: • I think that this command did not take my assumptions into account, otherwise why the imaginary part appeared? Sep 10, 2019 at 12:12
• Real roots of cubic equations generally involve imaginary numbers when expressed using radicals. One advantage of Root is that you avoid that. Sep 11, 2019 at 1:38

A few comments that may help:

(1) Since J > 0, factor it out of the matrix (h1 = H /. J->1). B and the eigenvalues of h will be in units of J.

(2) Instead of considering B and $$\alpha$$ to be the independent variables, define $$B_x$$ and $$B_y$$. (h2 = H /. J -> 1 /. Cos[α] -> Bx/B /. Sin[α] -> By/B)

(3) Another potential set of real, independent variables is {B^2, B^2*Cos[2α]. Look at the ToRadicals form of the eigenvalues to find other potential parameters. We know the eigenvalues are real, but choosing real parameters that allow MMA to simplify the imaginary parts to zero is not easy.

(4) Use Manipulate and Plot to visualize the eigenvalues as roots of the characteristic polynomial.

c1 = CharacteristicPolynomial[h1, x]
Manipulate[Plot[c1 /. B -> sb /. α -> sa, {x, -10, 10},
PlotRange -> {All, {-100, 100}}],
{{sb, 1, "B"}, 0, 5}, {{sa, π/4, "α"}, 0, π}]

c2 = CharacteristicPolynomial[h2, x]
Manipulate[Plot[c2 /. Bx -> sbx /. By -> sby, {x, -10, 10},
PlotRange -> {All, {-100, 100}}],
{{sbx, 1, "Bx"}, 0, 5}, {{sby, 1, "By"}, 0, 5}]