MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Re: Expanding powers of cosine


On 13 Dec 2007, at 15:26, Andrzej Kozlowski wrote:

>
> On 13 Dec 2007, at 10:02, michael.p.croucher at googlemail.com wrote:
>
>> Hi
>>
>> I would like to express even powers of Cos[x] in terms of powers of
>> Sin[x] using the identity Sin[x]^2+Cos[x]^2 = 1.  For example
>>
>> Cos[x]^4 = 1 - 2 Sin[x]^2 + Sin[x]^4
>>
>> I could not get any of Mathematica's built in functions to do this  
>> for
>> me so I created my own rule:
>>
>> expandCosn[z_] := Module[{s, res},
>> s = Cos[x]^n_ :> (1 - Sin[x]^2) Cos[x]^(n - 2) ;
>> res = z //. s;
>> Expand[res]
>> ]
>>
>> which works fine:
>>
>> In[14]:= expandCosn[Cos[x]^4]
>>
>> Out[14]= 1 - 2 Sin[x]^2 + Sin[x]^4
>>
>> My question is - have I missed something?  Is there an easier way to
>> do this?
>>
>> Cheers,
>> Mike
>>
>
> Here is one way. This is how to expand Cos[x]^24:
>
> First[GroebnerBasis[{Cos[x]^24, 1 - Cos[x]^2 - Sin[x]^2}, {Sin[x]},
>      {Cos[x]}]]
>
>  Sin[x]^24 - 12*Sin[x]^22 + 66*Sin[x]^20 -
>    220*Sin[x]^18 + 495*Sin[x]^16 - 792*Sin[x]^14 +
>    924*Sin[x]^12 - 792*Sin[x]^10 + 495*Sin[x]^8 -
>    220*Sin[x]^6 + 66*Sin[x]^4 - 12*Sin[x]^2 + 1
>
> Andrzej Kozlowski
>

In fact, more formally "correct" way to do this is by using  
PolynomialReduce:

  Last[PolynomialReduce[Cos[a]^24,
      {1 - Sin[a]^2 - Cos[a]^2}, {Cos[a], Sin[a]}]]
Sin[a]^24 - 12*Sin[a]^22 + 66*Sin[a]^20 -
    220*Sin[a]^18 + 495*Sin[a]^16 - 792*Sin[a]^14 +
    924*Sin[a]^12 - 792*Sin[a]^10 + 495*Sin[a]^8 -
    220*Sin[a]^6 + 66*Sin[a]^4 - 12*Sin[a]^2 + 1

GroebnerBasic gives the same answer (and PolynomialReduce uses  
GroebnerBasis to compute its answer) but that is a feature of the  
implementation rather than of the mathematics since, for exmple,  
returning a scalar multiple of the answer would constitute a element  
of a Groebner basis lying in the eliminaation idea. So, although  
Groebner basis can always be used to deal with such problems, formally  
the more correct way to deal with them is by using PolynomialReduce.

Andrzej Kozlowski

Andrzej Kozlowski


  • Prev by Date: FindRoot within a FindRoot Problem
  • Next by Date: Re: Re: Expanding powers of cosine
  • Previous by thread: Re: Re: Expanding powers of cosine
  • Next by thread: Re: Expanding powers of cosine