3

I am trying to solve a system of algebraic equations using Solve. The solution Mathematica gives use Root[] as an intermediate:

m5 = {{k - m w^2, -k, 0, 0, 0}, {-k, 2 k - m w^2, -k, 0, 0}, {0, -k, 2 k - m w^2, -k, 0}, {0, 0, -k, 2 k - m w^2, -k}, {0, 0, 0, -k, k - m w^2}};

sol = Solve[Det[m5] == 0 , w, Reals]

The output looks like

{{w -> ConditionalExpression[0, (k > 0 && m > 0) || (k > 0 && m < 0) || (k < 0 && m > 0) || (k < 0 && m < 0)]}, 
 {w -> ConditionalExpression[Root[5 k^2 - 5 k m #1^2 + m^2 #1^4 &, 1], (k > 0 && m > 0) || (k < 0 && m < 0)]}, {w -> ConditionalExpression[ Root[5 k^2 - 5 k m #1^2 + m^2 #1^4 &, 2], (k > 0 && m > 0) || (k < 0 && m < 0)]}, 
 {w -> ConditionalExpression[Root[5 k^2 - 5 k m #1^2 + m^2 #1^4 &, 3], (k > 0 && m > 0) || (k < 0 && m < 0)]}, 
 {w -> ConditionalExpression[Root[5 k^2 - 5 k m #1^2 + m^2 #1^4 &, 4], (k > 0 && m > 0) || (k < 0 && m < 0)]},
 {w -> ConditionalExpression[Root[k^2 - 3 k m #1^2 + m^2 #1^4 &, 1], (k > 0 && m > 0) || (k < 0 && m < 0)]},
 {w -> ConditionalExpression[Root[k^2 - 3 k m #1^2 + m^2 #1^4 &, 2], (k > 0 && m > 0) || (k < 0 && m < 0)]},
 {w -> ConditionalExpression[Root[k^2 - 3 k m #1^2 + m^2 #1^4 &, 3], (k > 0 && m > 0) || (k < 0 && m < 0)]},
 {w -> ConditionalExpression[Root[k^2 - 3 k m #1^2 + m^2 #1^4 &, 4], (k > 0 && m > 0) || (k < 0 && m < 0)]}}

Even if I use Simplify[] to state the assumptions

sol = Simplify[sol, Assumptions -> {k > 0, m > 0}]

I still cannot get rid of Root[] in the solution

{{w -> 0}, {w -> Root[5 k^2 - 5 k m #1^2 + m^2 #1^4 &, 1]},
 {w -> Root[5 k^2 - 5 k m #1^2 + m^2 #1^4 &, 2]},
 {w -> Root[5 k^2 - 5 k m #1^2 + m^2 #1^4 &, 3]}, 
 {w -> Root[5 k^2 - 5 k m #1^2 + m^2 #1^4 &, 4]}, 
 {w -> Root[k^2 - 3 k m #1^2 + m^2 #1^4 &, 1]}, 
 {w -> Root[k^2 - 3 k m #1^2 + m^2 #1^4 &, 2]}, 
 {w -> Root[k^2 - 3 k m #1^2 + m^2 #1^4 &, 3]}, 
 {w -> Root[k^2 - 3 k m #1^2 + m^2 #1^4 &, 4]}}

This is annoying because the quartics are well solvable. Can anyone help please?

Dan Zhang
  • 33
  • 4

2 Answers2

4

From the documentation of ToRadicals:

ToRadicals[expr] attempts to express all Root objects in expr in terms of radicals.

Hence simply

sol = Solve[Det[m5] == 0 , w, Reals]
ToRadicals @ sol

enter image description here

Moreover, you can get rid of the ConditionalExpressions with Normal, which in this case assumes that all the conditions are met and only displays the formulae:

enter image description here

corey979
  • 23,947
  • 7
  • 58
  • 101
3

Does this work for you? You can try 5th order. Mathematica finds solution. Replace w^2 by z

ClearAll[k, m, w, s, s]
m5 = {{k - m w^2, -k, 0, 0, 0}, {-k, 2 k - m w^2, -k, 0, 0}, {0, -k, 
    2 k - m w^2, -k, 0}, {0, 0, -k, 2 k - m w^2, -k}, {0, 0, 0, -k, 
    k - m w^2}};
d = Det[m5]

Mathematica graphics

d = d /. w -> z^(1/2)

Mathematica graphics

s = Solve[d == 0, z]

Mathematica graphics

Now replace back and solve for w

s = Flatten[(s /. z -> w^2) /. Rule -> Equal]

Mathematica graphics

Solve[#, w] & /@ s

Mathematica graphics

Nasser
  • 143,286
  • 11
  • 154
  • 359