Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

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?

share|improve this question
1  
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
3  
@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
3  
@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
show 2 more comments

4 Answers 4

up vote 6 down vote accepted

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. Let`s 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$.

share|improve this answer
    
+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
add comment
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])}*)
share|improve this answer
add comment

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.

share|improve this answer
add comment

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.}

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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