# How to get exact roots of this polynomial?

The equation $$64x^7 -112x^5 -8x^4 +56x^3 +8x^2 -7x - 1 = 0$$ has seven solutions $x = 1$, $x = -\dfrac{1}{2}$ and $x = \cos \dfrac{2n\pi}{11}$, where $n$ runs from $1$ to $5$. With NSolve, I tried

NSolve[64 x^7 - 112 x^5 - 8 x^4 + 56 x^3 + 8 x^2 - 7 x - 1 == 0, x, Reals]


and I get

{{x -> -0.959493}, {x -> -0.654861}, {x -> -0.5}, {x -> -0.142315}, \
{x -> 0.415415}, {x -> 0.841254}, {x -> 1.}}


With Solve, I tried

{{x -> -(1/2)}, {x -> 1},
{x -> Root[1 + 6 #1 - 12 #1^2 - 32 #1^3 + 16 #1^4 + 32 #1^5 &, 1]},
{x -> Root[1 + 6 #1 - 12 #1^2 - 32 #1^3 + 16 #1^4 + 32 #1^5 &, 2]},
{x -> Root[1 + 6 #1 - 12 #1^2 - 32 #1^3 + 16 #1^4 + 32 #1^5 &, 3]},
{x -> Root[1 + 6 #1 - 12 #1^2 - 32 #1^3 + 16 #1^4 + 32 #1^5 &, 4]},
{x -> Root[1 + 6 #1 - 12 #1^2 - 32 #1^3 + 16 #1^4 + 32 #1^5 &, 5]}}


How to get exact solutions of the given equation?

-
A first step forward is Solve[Factor[64 x^7 - 112 x^5 - 8 x^4 + 56 x^3 + 8 x^2 - 7 x - 1] == 0, x]. –  b.gatessucks Jan 4 '13 at 16:36
@b.gates And the next two steps are to let $x\to z/2$ to clear out powers of $2$ and then to take the big factor, $p(z)=1+3 z-3 z^2-4 z^3+z^4+z^5$ and symmetrize it via $p(z+1/z)z^5$: the primitive eleventh roots of unity pop right out. –  whuber Jan 4 '13 at 18:25
@minthao: Those roots are exact. What you seem to mean, then, is that you wish to identify some of the roots with some of the roots of another (unspecified) polynomial (which is how those cosines are defined). –  whuber Jan 4 '13 at 18:32
@whuber Brilliant ! –  b.gatessucks Jan 4 '13 at 18:58
@whuber Why don't you switch your comment to another answer ? –  Artes Jan 6 '13 at 17:54

Since we ask if the numbers $\;x_n = \cos(\frac{2n\pi}{11})\;$ are the actual roots of the polynomial :

p[x_] := 64 x^7 - 112 x^5 - 8 x^4 + 56 x^3 + 8 x^2 - 7 x - 1


any numerical approach cannot be sufficient and in order to prove the statement we should proceed with a symbolic approach. Nevertheless NSolve may guarantee that all the roots could be represented in terms of values of trigonometrical functions like Sin or Cos for real arguments since we have :

And @@ ( -1 <= x <= 1 /. NSolve[ p[x] == 0, x] )

True


The five of the roots are represented in terms of the Root objects, and only two of them have been rewritten by built-in rewrite rules as rational numbers :

r = List @@ Roots[64 x^7 - 112 x^5 - 8 x^4 + 56 x^3 + 8 x^2 - 7 x - 1 == 0, x][[All, 2]];
r[[5 ;;]]

{ Root[1 + 6 #1 - 12 #1^2 - 32 #1^3 + 16 #1^4 + 32 #1^5 &, 5], -(1/2), 1}


Now we can experss r[[;;5]] in terms of Cos (it is possible as we have shown above), we can do it this way :

ArcCos @ r[[;; 5]] // FullSimplify

{ 10π/11, 8π/11, 6 π/11, 4π/11, 2π/11}


We might also use ArcSin as well. Lets verify if they are equal :

Table[ Root[1 + 6 #1 - 12 #1^2 - 32 #1^3 + 16 #1^4 + 32 #1^5 &, k] - Cos[2(6 - k)π/11],
{k, 5}] // RootReduce

{0, 0, 0, 0, 0}


Well, indeed these are the roots of the polynomial $p(x)$. One observes that FullSimplify cannot reduce the above Table with the standard built-in rewrite rules unless one uses e.g. Table[ Root[...] - Cos[...], {k,5}]// FullSimplify[#, TransformationFunctions -> RootReduce]&.

Another way which might be helpful in more involved cases would be e.g. mapping PossibleZeroQ, however we have to remember that PossibleZeroQ provides a quick but not always accurate test.

## Edit

Since all the roots can be represented as Sin or Cos for real arguments, it would be a good idea to explain what is so specific behind the polynomial p[x]. We can reach a general view working with a transformation pointed out by whuber in the comments.

g[z_] := (p[x] /. x -> (z + 1/z)/2) 2 z^Exponent[p[x], x]
g[z] // Factor

(-1 + z)^2 (1 + z + z^2) (1 + z + z^2 + z^3 + z^4 + z^5 + z^6 + z^7 + z^8 + z^9 + z^10)


All the roots of g[z] are roots of unity :

And @@ RootOfUnityQ[ List @@ Roots[ g[z] == 0, z][[All, 2]] ]

True


moreover all the polynomial factors of g[z] are cyclotomic polynomials, respectively $C^{2}_{1}(z)$, $C_{3}(z)$ and $C_{11}(z)$ (see Cyclotomic), so we have :

Times @@ (Cyclotomic[#, z] & /@ {1, 1, 3, 11}) == g[z] // Factor

True


Following in reverse direction we would generate more polynomials with the roots expressible in terms of $\sin$ or $\cos$ functions on rational multiples of $\pi$.

-
+1 Example of another way: the output of MinimalPolynomial[ Root[1 + 6 #1 - 12 #1^2 - 32 #1^3 + 16 #1^4 + 32 #1^5 &, 1] - Cos[10 \[Pi]/11]] is #1 &. –  whuber Jan 7 '13 at 1:01

This is too big for a comment, so I am writing it here. I am not sure if there is a trick to make Solve return the exact solution $x =\cos\dfrac{2 n\pi} {11}$. But for sure, whether Solve or NSolve, these functions tend to give pretty accurate solutions for such straightforward polynomials.

Proof of practical exactness

Solve the equation and through the two rational roots $\{1,-0.5\}$

res = Select[(Solve[64 x^7 - 112 x^5 - 8 x^4 + 56 x^3 + 8 x^2 - 7 x - 1 == 0, x,
WorkingPrecision -> 200] // N)[[All, 1,2]],
(# != -0.5 && # != 1.) &] // Sort;


The expected real roots

pred = N[Cos[2 # Pi/11], 200] & /@ Range[5] // Sort;


Now difference between expected and obtained results

res - pred


{0., 0., 0., 0., 0.}

-

algebraic demonstration of the forward problem:

Simplify[Collect[
ExpandAll[64 (x + 1/2) Product[ x - Cos[2 n π/11], {n, 0, 5} ]] , {x}  ,
(  TrigReduce[#] /.
Sin[(5π)/22] ->
1/2 - (Cos[π/11] - Cos[(2π)/11] +
Sin[π/22] - Sin[(3π)/22]) ) &]]


$-1 - 7 x + 8 x^2 + 56 x^3 - 8 x^4 - 112 x^5 + 64 x^7$

Not quite a proof as I haven't prooved that identity I manualy applied.

-
Element[Cos[Pi/11], Algebraics]
(*True*)

ExpToTrig /@ Factor[-1 - 7 x + 8 x^2 + 56 x^3 - 8 x^4 - 112 x^5 + 64 x^7, Extension -> Cos[Pi/11]]
(*Or ComplexExpand*)

(*(-1+x) (1+2 x) (-2 x-2 Cos[π/11]) (2 x-2 Cos[(2 π)/11]) (2 x-2 Sin[(3 π)/22]) (-2 x-2 Sin[(5 π)/22]) (1+2 x-2 Cos[π/11]+2 Cos[(2 π)/11]+2 Sin[(3 π)/22]-2 Sin[(5 π)/22])*)

x /. Solve[% == 0, x]

(*{-(1/2), 1, -Cos[π/11], Cos[(2 π)/11], Sin[(3 π)/22], -Sin[(5 π)/22],
1/2 (-1 + 2 Cos[π/11] - 2 Cos[(2 π)/11] - 2 Sin[(3 π)/22] + 2 Sin[(5 π)/22])}*)
`
-