Reduction Problem
- To: mathgroup <mathgroup at yoda.physics.unc.edu>
- Subject: Reduction Problem
- From: Roberto Sierra <73557.2101 at compuserve.com>
- Date: 30 Jun 93 15:16:46 EDT
I'm having trouble adding a couple of extensions to Plus and
Sqrt to perform specific session-wide reductions in the eqns
I am working with. I want these reductions to always occur,
not just when I call Replace (/.) or ReplaceRepeated (//.).
Here are the definitions:
Unprotect[Sqrt,Plus];
Sqrt[x_^n_?EvenQ] := x^(n/2); (* True if x>=0 *)
Plus[1, Cos[t_]] := 2 Cos[t/2]^2; (* True for all t *)
Plus[x_, x_ Cos[t_]] := 2 x Cos[t/2]^2;
Protect[Sqrt,Plus];
Here are some tests, which indicates that my defs work:
In[6] :=
Sqrt[t^2] (* Don't worry about t<0 *)
Out[6] :=
t
In[7] :=
1 + Cos[t]
Out[7] :=
t 2
2 Cos[-]
2
In[8] :=
2 + 2 Cos[t]
Out[8] :=
t 2
4 Cos[-]
2
OK. Here's the problem. Using a 'real' expression, I
don't get both rules working together. Why?
In[9] :=
ds1 = Sqrt[ (1+Cos[theta])^2 + Sin[theta]^2 ]
Out[9] :=
theta 4 2
Sqrt[4 Cos[-----] + Sin[theta] ]
2
In[10] :=
ds2 = ExpandAll[ds1,Trig->True]
Out[10] :=
theta 2
2 Sqrt[Cos[-----] ]
2
If I type this expression back into MMA, I get the fully
reduced equation:
In[11] :=
2 Sqrt[Cos[theta/2]^2]
Out[11] :=
theta
2 Cos[-----]
2
What's going on??
Signed,
Confused