How to distinguish exact roots using Solve?

  • Context: Mathematica 
  • Thread starter Thread starter aheight
  • Start date Start date
  • Tags Tags
    Roots
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 1K views
aheight
Messages
318
Reaction score
108
Can someone help me distinguish when Solve[polynomial==0,x] returns exact solutions as opposed to solutions in terms of Roots? For example, if I code:

myroots = x /. Solve[1/2 + 1/5 x + 9/10 x^2 + 2/3 x^3 - 1/5 x^4 + 3/11 x^5 == 0, x]

this cannot be solved in terms of radicals so Solve returns Root objects:

{Root[165+66 #1+297 #1^2+220 #1^3-66 #1^4+90 #1^5&,1],
Root[165+66 #1+297 #1^2+220 #1^3-66 #1^4+90 #1^5&,2],
Root[165+66 #1+297 #1^2+220 #1^3-66 #1^4+90 #1^5&,3],
Root[165+66 #1+297 #1^2+220 #1^3-66 #1^4+90 #1^5&,4],
Root[165+66 #1+297 #1^2+220 #1^3-66 #1^4+90 #1^5&,5]}

but
myroots = x /. Solve[1/2 + 1/5 x + 9/10 x^2 + 2/3 x^3 - 1/5 x^4 == 0, x]

returns exact solutions in terms of radicals. I can't figure out how to distinguish the two as in:

If[solve returns exact solutions,
do this;
,
else if Roots are returned do this
]

Can someone help me do this?
 
Physics news on Phys.org
A Root is an exact numeric quantity. You can use N on it to get an approximate value to any degree of precision needed. You can also use ToRadicals on it if needed.
 
You should read the help files on pattern matching. The pattern which matches a Root object is "_Root". Or you can use Head, which returns the head of an expression:

Code:
If[Head[expr]===Root, ...]
 
  • Like
Likes   Reactions: aheight