Re: Simplification question
- To: mathgroup at smc.vnet.net
- Subject: [mg59112] Re: [mg59032] Simplification question
- From: Adam Strzebonski <adams at wolfram.com>
- Date: Fri, 29 Jul 2005 00:41:49 -0400 (EDT)
- References: <200507270525.BAA19953@smc.vnet.net> <30D2C21A-5F80-42E8-8E5C-AF5AB426DF5B@mimuw.edu.pl>
- Reply-to: adams at wolfram.com
- Sender: owner-wri-mathgroup at wolfram.com
Andrzej Kozlowski wrote: > > On 27 Jul 2005, at 07:25, snoofly wrote: > >> Can someone explain this to me please. >> >> Clear[m] >> >> Simplify[Sin[3 m Pi], Assumptions -> m \[Element] Integers] >> 0 >> >> Simplify[Cos[3 m Pi], Assumptions -> m \[Element] Integers] >> >> Cos[3 m \[Pi]] >> >> I'm not sure why Mathematica cannot deduce that the second >> simplification >> should be (1)^m. >> >> > > The reason is, hm, simple, that is Mathematica's default complexity > function does not consider (-1)^(3m) as "simpler" than Cos[3m Pi]. You > can use > > In[15]:= > Refine[Cos[3*m*Pi], Assumptions -> m â?? Integers] > > Out[15]= > (-1)^(3*m) > > Actually, however, the real situation is not as simple. The answer > (-1)^m does indeed have a lower LeafCount than Cos[3*m*Pi] (3 vs. 5) > but Mathematica never arrives at this answer. Instead it gets (-1)^ > (3*m) which has the same LeafCount 5 as Cos[3*m*Pi]. > > So let us define a function which will convert (-1)^(3*m) to (-1)^m > > f[(-1)^(k_)] := (-1)^PolynomialMod[k, 2] > > We shall append f to the default transformation functions and try > FullSimplify: > > > FullSimplify[Cos[3*m*Pi], m â?? Integers, > TransformationFunctions -> {Automatic, f}] > > > (-1)^m > > Very surprisingly (for me) this does now work with just Simplify. For this to work Simplify needs to applied recursively to the result of the transformation Cos[3*m*Pi] -> (-1)^(3*m). Simplify rarely applies itself recursively to results of transformations that did not make the expression simpler, because of high computational cost. > I also wonder why something like f is not automatically included among > the transformation functions? I will add it (of course f needs to check that all polynomial variables in k are assumed to be integers). Best Regards, Adam Strzebonski Wolfram Research
- References:
- Simplification question
- From: "snoofly" <snoofly@snoofly.com>
- Simplification question