Re: A Problem with Simplify
- To: mathgroup at smc.vnet.net
- Subject: [mg87497] Re: A Problem with Simplify
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Fri, 11 Apr 2008 05:57:47 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <ftkb7f$a9m$1@smc.vnet.net> <ftmts8$4l5$1@smc.vnet.net>
Alexey Popkov wrote: <snip> > Recently I also have found another strange bug in Simplfy (not so > dangerous): > FullSimplify[Sin[x]*Cos[x]] > gives Sin[x]*Cos[x] instead Sin[2*x]/2. The workaround is > FullSimplify[2*Sin[x]*Cos[x]]/2. <snip> This is not a bug, indeed. As a rule of thumb, *FullSimplify* tries to minimize the leaf count of the expression. For the case above, the original expression sin(x)cos(x) has a leaf count of 5 whereas the trigonometric identity sin(2x)/2 has a leaf count of 8. Therefore, *FullSimplify* returns the original form sin(x)cos(x) since it is deemed as simpler than sin(2x)/2 w.r.t. the lead count of each expression. Note that, in general, you can modify/tweak this default behavior to suit your needs by witting your own *ComplexityFunction*. However, when dealing with trigonometric expressions (especially when looking for some trigonometric identities) it is usually better and less cumbersome to use *TrigReduce* and the like (*TrigExpand*, *TrigFactor*, etc.). FullSimplify[Sin[x]*Cos[x]] (* returns Cos[x] Sin[x] *) % // LeafCount (* returns 5 *) TrigReduce[Sin[x]*Cos[x]] (* returns 1/2 Sin[2 x] *) % // LeafCount (* returns 8 *) LeafCount[Cosh[x] - Sinh[x]] (* returns 7 *) FullSimplify[Cosh[x] - Sinh[x]] (* returns E^-x *) % // LeafCount (* returns 5 *) Best regards, -- Jean-Marc