7

I want to calculate the integral $I = \displaystyle\int{\cos ^5 x\, \mathrm dx}$. Using the variable $t = \sin x$, I get $$I = \sin x - \frac{2}{3}\sin^3 x + \frac{1}{5}\sin^5 x + C.$$ With Mathematica, when I input

 Integrate[Cos[x]^5, x]

I get

(5 Sin[x])/8 + 5/48 Sin[3 x] + 1/80 Sin[5 x]

How to format the result in the form? $$I = \sin x - \frac{2}{3}\sin^3 x + \frac{1}{5}\sin^5 x.$$

Similar questions with integral $I =\displaystyle \int{\dfrac{\mathrm{d}x}{1 + \sin x + \cos x}}$ by setting $t = \tan\dfrac{x}{2}$, we have $I = \ln \left|1 + \tan\dfrac{x}{2}\right|$. I tried

(Integrate[1/(1 + Sin[x] - Cos[x]), x] // TrigExpand) /. {Sin[x] -> 
     2*Tan[x/2]/(1 + Tan[x/2]^2), 
    Cos[x] -> (1 - Tan[x/2]^2)/(1 + Tan[x/2]^2)} // 
  Simplify // TraditionalForm

and get the result log(sin(x/2)+cos(x/2))-log(cos(x/2)). How to format the result in the form?
$$I = \ln \left|1 + \tan\dfrac{x}{2}\right|$$.

J. M.'s missing motivation
  • 124,525
  • 11
  • 401
  • 574
minthao_2011
  • 4,503
  • 3
  • 31
  • 46
  • I am sorry when I ask the question. – minthao_2011 Oct 17 '12 at 15:42
  • 2
    using Integrate[Cos[x]^5, x] // TrigExpand // convert[#, Sin[x]] & using the convert function defined in http://mathematica.stackexchange.com/questions/434/how-to-express-trigonometric-equation-in-terms-of-of-given-trigonometric-functio – chris Oct 17 '12 at 15:46
  • @chris TrigExpand is becoming one of my most favorite functions even though I am yet to utilize it! – dearN Oct 17 '12 at 19:01

4 Answers4

8

If you expand your expression in terms of elementary trig functions

Integrate[Cos[x]^5, x] // TrigExpand

(5 Sin[x])/8 + 5/16 Cos[x]^2 Sin[x] + 1/16 Cos[x]^4 Sin[x] - (
 5 Sin[x]^3)/48 - 1/8 Cos[x]^2 Sin[x]^3 + Sin[x]^5/80

you will see only even powers of Cos - so it's straightforward to replace it like this:

(Integrate[Cos[x]^5, x] // TrigExpand) /. 
   Cos[x] -> Sqrt[1 - Sin[x]^2] // Simplify // TraditionalForm

enter image description here

chris
  • 22,860
  • 5
  • 60
  • 149
Vitaliy Kaurov
  • 73,078
  • 9
  • 204
  • 355
8

I'll answer with a more general module I've done for converting trig expressions. An overkill here, but anyway:

trigSet[exp_, inTerm_] := 
 Module[{trigSyms, rels, set, setRep, setRep1, toLow, oneInTermsOf, allInTermsOf, fq, 
          ruleAll, convert},

  trigSyms = {Sin, Cos, Tan, Cot, Sec, Csc};
  rels     = {csc sin == 1, cos^2 + sin^2 == 1, 1 == cos sec, tan == sin/cos, cot tan == 1};
  set      = ToExpression /@ ToLowerCase /@ SymbolName /@ trigSyms;
  setRep   = Thread[set -> (ToExpression /@ (StringJoin[#, "[x_]"] & /@ ToString /@ set))];
  setRep1  = Thread[set -> (ToExpression /@ (StringJoin[#, "[x]"] & /@ ToString /@ set))];
  toLow    = Thread[trigSyms -> set];

  oneInTermsOf[one_, of_] :=  Solve[rels, {one}, Complement[set, {one, of}]];
  allInTermsOf[of_] :=  Flatten[oneInTermsOf[#, of] & /@ Complement[set, {of}]];
  fq[x_, y_] := FreeQ[x, Alternatives @@ Complement[set, {y}]];
  ruleAll[of_] := Rule @@@ Transpose[{#[[1]] /. setRep, #[[2]] /. setRep1} &@
                                                     Transpose@(List @@@ allInTermsOf[of])];
  convert[expr_, inTerms_] := FullSimplify@ Union@Select[
      Flatten@NestWhile[# /. (List /@ ruleAll[inTerms]) &, {TrigExpand[expr] /. 
           toLow }, ! Or @@ (fq[#, inTerms] & /@ Flatten@#) &], fq[#, inTerms] &];
  HoldForm[ Evaluate@convert[exp, inTerm]] /. (Reverse /@ toLow)
  ]

  trigSet[(5 Sin[x])/8 + 5/48 Sin[3 x] + 1/80 Sin[5 x], sin]
  (*
  -> {Sin[x]-(2 Sin[x]^3)/3+Sin[x]^5/5}
  *)

Test it with more difficult expressions:

trigSet[Cos[3 x] - Tan[2 x] + Cot[3 x]^2, sin]

Edit

Depending on your expression, because of the signs in the radicals, you could need more than one "converted" one to cover the whole domain. For example:

s = Cos[x] Sin[x];
s0 = trigSet[s, sin]
s1 = FullSimplify[Reduce[# == s, x, Reals] & /@ ReleaseHold[s0] /. _Equal -> False]
(*
{-Sin[x] Sqrt[1-Sin[x]^2],Sin[x] Sqrt[1-Sin[x]^2]}

{C[1] \[Element] Integers && 
      ((Pi + x > 2 Pi  C[1] && Pi + 2 x <= 4 Pi C[1]) || Pi/2 <= x - 2 Pi C[1] < Pi),
 C[1] \[Element] Integers &&
       -(Pi/2) <= x - 2 \[Pi] C[1] <= Pi/2}

*)

Still working in automating this last process, but you can plot it like:

f[x_] := Piecewise[{{-Sin[x] Sqrt[1 - Sin[x]^2], 
                      Resolve[Exists[C[1], Element[C[1], Integers], 
                              ((Pi + x > 2 Pi  C[1] && Pi + 2 x <= 4 Pi C[1]) || 
                                Pi/2 <= x - 2 Pi C[1] < Pi)]]}, 
                    {Sin[x] Sqrt[1 - Sin[x]^2], 
                       Resolve[Exists[C[1], Element[C[1], Integers],
                             -(Pi/2) <= x - 2 \[Pi] C[1] <= Pi/2]]}}];
Plot[{f[x], Sin[x] Cos[x]}, {x, 0, 2 Pi}, PlotStyle -> {{Thick, Dashed, Red}, Blue, Green}]

Mathematica graphics

Dr. belisarius
  • 115,881
  • 13
  • 203
  • 453
  • how does this differ from Simon's answer? http://mathematica.stackexchange.com/questions/434/how-to-express-trigonometric-equation-in-terms-of-of-given-trigonometric-functio – chris Oct 17 '12 at 16:07
  • @chris no idea. Probably in that this code is mine and one can get the domains of validity of each function in case you have more than one result (in different intervals) – Dr. belisarius Oct 17 '12 at 16:09
  • and why does it return a list? – chris Oct 17 '12 at 16:12
  • @chris Because the signs of radicals are taken in account. Try trigSet[Sin[x] Cos[x], sin] and plot the results – Dr. belisarius Oct 17 '12 at 16:14
  • With trigSet[Cos[x]^4 - Cos[x/2]^2, cos], I get !(* TagBox[ RowBox[{"{", RowBox[{"1", "-", RowBox[{"9", " ", SuperscriptBox[ RowBox[{"Cos", "[", FractionBox["x", "2"], "]"}], "2"]}], "+", RowBox[{"24", " ", SuperscriptBox[ RowBox[{"Cos", "[", FractionBox["x", "2"], "]"}], "4"]}], "-", RowBox[{"32", " ", SuperscriptBox[ RowBox[{"Cos", "[", FractionBox["x", "2"], "]"}], "6"]}], "+", RowBox[{"16", " ", SuperscriptBox[ RowBox[{"Cos", "[", FractionBox["x", "2"], "]"}], "8"]}]}], "}"}], HoldForm]) – minthao_2011 Oct 17 '12 at 16:22
  • @minthao_2011 Yes, what is the problem with that? – Dr. belisarius Oct 17 '12 at 16:23
6

It's somewhat convenient to use Chebyshev polynomials for such purposes. Here, I use the Chebyshev polynomial of the second kind, due to the convenient identity

$$U_n(\cos\,x)=\frac{\sin((n+1)x)}{\sin\,x}$$

Here goes:

Integrate[Cos[x]^5, x] /.
       Sin[n_Integer x] :> Sin[x] ChebyshevU[n - 1, Sqrt[1 - Sin[x]^2]] // Expand
   Sin[x] - (2 Sin[x]^3)/3 + Sin[x]^5/5

For completeness, the relation $T_n(\cos\,x)=\cos\,nx$ can be similarly exploited. I use that in this answer.

J. M.'s missing motivation
  • 124,525
  • 11
  • 401
  • 574
6

One can use Sin[x]^2 + Cos[x]^2 == 1 and the third argument in Solve to eliminate an unwanted dependent variable (i.e. Cos[x]) :

Expand @ Solve[{L == TrigExpand @ Integrate[Cos[x]^5, x], Sin[x]^2 + Cos[x]^2 == 1},
                L, {Cos[x]}]

That is useful in more general cases, but with the problem at hand we can observe, that we needn't eliminate Cos[x], e.g. :

Expand [Solve[{L= TrigExpand @ Integrate[Cos[x]^5, x], Sin[x]^2 + Cos[x]^2 == 1}, L]][[1, 1, 2]]
Sin[x] - (2 Sin[x]^3)/3 + Sin[x]^5/5

A bit more reliable variation of Vitaliy's approach :

TrigExpand[ Integrate[Cos[x]^5, x]] /. Solve[Sin[x]^2 + Cos[x]^2 == 1, Cos[x]] // 
Simplify // Union

Another approach : let's substitute Cos[x]^n for an even integer n by (1 - Sin[x]^2)^(n/2), e.g.

Simplify[ TrigExpand[ Integrate[Cos[x]^5, x]] /. Cos[x]^n_?EvenQ -> (1 - Sin[x]^2)^(n/2)]

Edit

To proceed with another problem of the OP remembering that Integrate[1/(1 + Sin[x] - Cos[x]), x] and Log @ Abs[1 + Tan[x/2]] are not quite equivalent, we have to assume some restrictions of the variable x. Let x be real in the range where Cos[x/2] + Sin[x/2] > 0 and Cos[x/2] > 0, e.g. Pi > x > -Pi/2, now we have :

Simplify[ Integrate[ 1/(1 + Sin[x] + Cos[x]), x], Pi > x > -Pi/2]
Log[1 + Tan[x/2]]
% // TraditionalForm

enter image description here

Artes
  • 57,212
  • 12
  • 157
  • 245