# 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. – b.gates.you.know.what Sep 10 '19 at 11:54
• It works, but what about the assumptions? – Ragab Zidan Sep 10 '19 at 14:20
• Eigenvalues[H, Cubics -> True] gives the same result as Eigenvalues[H] // ToRadicals – Bob Hanlon Sep 10 '19 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? – Ragab Zidan Sep 10 '19 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. – John Doty Sep 11 '19 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}]