5
$\begingroup$

I want to reduce all Cos[2 x] to 1 - 2Sin[x]^2, it seems Mathematica will always simplify 2 Sin[x]^2 to 1 Cos[2x], but how to do the reverse?

$\endgroup$
3
  • 3
    $\begingroup$ How about TrigExpand@Cos[2 x] /. Cos[a_]^2 :> (1 - Sin[a]^2) ? $\endgroup$ Commented Jul 24, 2015 at 15:32
  • 5
    $\begingroup$ you forgot the Square, Cos[2x]=1-2 Sin[x]^2 $\endgroup$ Commented Jul 24, 2015 at 18:07
  • 1
    $\begingroup$ These seem related: (4281), (7741), (7799), (18144), (19855) $\endgroup$ Commented Jul 25, 2015 at 12:11

3 Answers 3

8
$\begingroup$

One way will be to add it to the definition of Cos by Unprotecting it.

Unprotect[Cos] Cos[2 x] := 1 - 2 Sin[x]^2 Protect[Cos] 

Then evaluating the following:

2 Cos[2 x] + 3 x Cos[2 x] + Tan[x] Sin[x] Cos[2 x] + Exp[Tan[Cos[2 x]]] 

gives:

Mathematica graphics

Which you can further Simplify if you so please. Notice that the desired replacement has occurred everywhere there's Cos[2x]

$\endgroup$
2
  • $\begingroup$ @SimonRochester: Why do you think it does not work? $\endgroup$ Commented Jul 25, 2015 at 9:49
  • $\begingroup$ @Wizard That was a comment about the previous version. This version should work fine...although maybe a little heavy handed... $\endgroup$ Commented Jul 25, 2015 at 16:05
4
$\begingroup$

Expanding Cos[2 x] to 1 - Sin[x]^2 and simplifying are somewhat opposite procedures. Simplify basically reduces the leaf count (see How do I invoke the default complexity function? for more details). As we can see the number of leaves in the goal is twice the numbers of leaves in the starting expression:

LeafCount /@ {Cos[2 x], 1 - Sin[x]^2} (* {4, 8} *) TreeForm /@ {Cos[2 x], 1 - Sin[x]^2} // GraphicsRow 

Mathematica graphics

The basic built-in function for performing the sort transformation the OP desires is TrigExpand. But TrigExpand applies a different identity to Cos[2 x] than the desired one:

TrigExpand[Cos[2 x]] (* Cos[x]^2 - Sin[x]^2 *) 

This may be acceptable, since it is one of the three common forms of the double-angle identity. Generally, I try to figure out how Mathematica works and adapt my thinking to conform -- that is, I try to learn how to use the tool in the way it was designed to be used and to work with the tool and not against it. But Mathematica is a quite flexible tool, so if the identity in terms of Sin[x] only is desired, it is possible to use it.

One could replace Cos[x]^2 by 1 - Sin[x]^2 in the output of TrigExpand as suggested in a comment by Stefan R. One could also replace Cos[2 x] by 1 - Sin[x]^2 directly. This seems the simplest way.

Cos[2 x] /. {Cos[2 t_] :> 1 - 2 Sin[t]^2} (* 1 - 2 Sin[x]^2 *) 

In a complicated expression like RunnyKine's, the possible goals ramify. TrigExpand does a really bad job (image) as evaluated by a human-readable aesthetic. If we make the expression slightly more complicated with a Cos[4 x],

expr = 2 Cos[4 x] + 3 x Cos[2 x] + Tan[x] Sin[x] Cos[2 x] + Exp[Tan[Cos[2 x]]]; 

then is the goal to expand only Cos[2 x], like this?

expr /. {Cos[2 t_] :> 1 - 2 Sin[t]^2} (* E^Tan[1 - 2 Sin[x]^2] + 2 Cos[4 x] + <-- N.B. Cos[4 x] 3 x (1 - 2 Sin[x]^2) + Sin[x] (1 - 2 Sin[x]^2) Tan[x] *) 

Or should we expand all cosines with an even coefficient, like this?

expr //. (* <-- N.B. ReplaceRepeated *) {Cos[a_Integer?EvenQ t_] :> 1 - 2 Sin[a t/2]^2} (* E^Tan[1 - 2 Sin[x]^2] + 3 x (1 - 2 Sin[x]^2) + 2 (1 - 2 Sin[2 x]^2) + <-- N.B. Sin[2 x] Sin[x] (1 - 2 Sin[x]^2) Tan[x] *) 

Or maybe the goal is to convert all sines and cosines to terms of Sin[x], unless there are leftover terms of Cos[x], which can be done like this:

expr //. {Cos[a_Integer?EvenQ t_] :> 1 - 2 Sin[a t/2]^2, Sin[a_Integer?EvenQ t_] :> 2 Sin[a t/2] Cos[a t/2], Cos[t_]^(p_Integer?EvenQ) :> (1 - Sin[t]^2)^(p/2)} (* E^Tan[1 - 2 Sin[x]^2] + 3 x (1 - 2 Sin[x]^2) + 2 (1 - 8 Sin[x]^2 (1 - Sin[x]^2)) + Sin[x] (1 - 2 Sin[x]^2) Tan[x] *) 

And what, if anything, to do about Tan[x]?

$\endgroup$
2
  • $\begingroup$ Thanks, in fact my expression is quite simple: ds2=dr^2 + 1/2 (d\[Theta]^2 + 2 d\[Phi]^2) r^2 - 1/2 d\[Theta]^2 r^2 1 - 2 Sin[\[Phi]]^2, and I get what I want by your method, ds2/. {Cos[2 t_] :> 1 - 2 Sin[t]^2} // Simplify $\endgroup$ Commented Jul 26, 2015 at 3:21
  • 1
    $\begingroup$ @vanabel You're welcome. Sometimes Simplify will convert the expression back to terms of Cos[2 x] and sometimes it will combine the Sin[x] with other terms and not convert it. Trig. is tricky to deal with. BTW, I would not redefine a basic function like Cos in the way RunnyKine does. Since there are, I believe, many rules built into Mathematica about sine and cosine, I would be afraid the redefinition would break something. Just what that is would be difficult to predict. $\endgroup$ Commented Jul 26, 2015 at 3:28
2
$\begingroup$

You could go ahead and modify the mathematica output manually by defining exactly what you want to have transformed. In your case this would look like this:

MakeBoxes[Cos[2*x_], StandardForm] := RowBox[{MakeBoxes[1 - 2 Sin[x]^2]}]; 

This effectively turns every occurrence of Cos[2x] in StandardForm into 1 - 2 Sin[x]^2. I use this to get a certain standard notation for dirac delta functions.

$\endgroup$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.