4
$\begingroup$

Does Solve[] find ALL the exact roots of rational polynomials?

I've done a bunch of tests where I created an expression with some analytic roots, and Solve[] always found them all. But is the failure of Solve[] to find any analytic roots conclusive proof that none exist?

expr = (12 x - 29)*(31 x + 113)*(501 x - Prime[28])*(x^4 - 7 x^2 + 1001 x - 20)*(1001*x^5 + 47*x^4 + x^3 + 91*x^2 + 144 x - 1001) //Expand;
Solve[expr == 0, x]
$\endgroup$
11
  • 1
    $\begingroup$ Maybe I'm misreading the question, but polynomials of degree > 1 always have a root (FTA). $\endgroup$
    – Michael E2
    Commented May 2, 2016 at 23:05
  • $\begingroup$ @MichaelE2 I'm asking specifically about analytically expressible roots. All n roots of an n-th order polynomial are analytically expressible if n<5, but if n>=5, there might not be any analytical solutions. Solve[] leaves those solutions in Root[] form. $\endgroup$ Commented May 2, 2016 at 23:32
  • $\begingroup$ @MichaelE2 For example, if you run Solve[Sum[x^n, {n, 0, 4}] + 1 == 0, x], you'll get analytical expressions for each of the four solutions, which are all irrational. If you change the 4 to a 5, you'll get none. $\endgroup$ Commented May 2, 2016 at 23:38
  • $\begingroup$ By "analytically expressible", I take it you mean expressible "in terms of (only) radicals"? (That is, not just any exact analytic or symbolic expression.) $\endgroup$
    – Michael E2
    Commented May 2, 2016 at 23:39
  • $\begingroup$ @MichaelE2 I don't believe polynomials have any exact solutions other than rational solutions and solutions in terms of radicals. $\endgroup$ Commented May 2, 2016 at 23:42

1 Answer 1

6
$\begingroup$

I guess the answer is "no," Solve does not always find solutions in terms of radicals when they exist.

Example: The polynomial $x^5 + 20 x^3 + 20 x^2 + 30 x + 10$ has root expressible in terms of radicals (see Wikipedia):

poly = x^5 + 20 x^3 + 20 x^2 + 30 x + 10;
x1 = 2^(1/5) - 2^(2/5) + 2^(3/5) - 2^(4/5);
poly /. x -> x1 // Simplify
(*  0  *)

But Solve returns only Root objects:

Solve[poly == 0, x]
(*
  {{x -> Root[10 + 30 #1 + 20 #1^2 + 20 #1^3 + #1^5 &, 1]}, 
   ...,
   {x -> Root[10 + 30 #1 + 20 #1^2 + 20 #1^3 + #1^5 &, 5]}}
*)

Applying ToRadicals does not convert Root to radicals. However all roots may be expressed in terms of radicals, as may be seen by executing the following:

deflation = PolynomialReduce[poly, {x - x1}, x][[1, 1]]
Solve[deflation == 0, x]
(* long expression in radicals omitted *)

They may be compared to the original Root objects with

(x /. Solve[poly == 0, x]) -
   Join[{x1}, x /. Solve[deflation == 0, x]] // FullSimplify
(*  {0, 0, 0, 0, 0}  *)
$\endgroup$
3
  • $\begingroup$ Thank you, even though I was hoping the answer would be yes. :-( $\endgroup$ Commented May 3, 2016 at 2:14
  • 3
    $\begingroup$ In fact it's not trivial determining if a polynomial's root can even be expressed in terms of radicals. One needs to find its Galois group. See here. $\endgroup$
    – Greg Hurst
    Commented May 3, 2016 at 2:31
  • 2
    $\begingroup$ Here's a package to solve quintics in radicals (when possible). $\endgroup$
    – Greg Hurst
    Commented May 3, 2016 at 2:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.