ComplexityFunction affects set of transformations tried by Simplify
- To: mathgroup at smc.vnet.net
 - Subject: [mg71492] ComplexityFunction affects set of transformations tried by Simplify
 - From: "Schochet" <schochet at netvision.net.il>
 - Date: Mon, 20 Nov 2006 18:11:55 -0500 (EST)
 
Oops! I originally sent this as a reply to an unrelated thread.
Please reply only to this new version.
As part of a large computation, I wanted Mathematica to
simplify expressions of the form   Sqrt[c + d/k](c k + d)2,
where k is positive, to   (c k + d)^(5/2)/Sqrt[k]
Note that Mathematica knows that the two expressions
are equivalent:
In[1]:=expr1 = Sqrt[c + d/k](c k + d)2;
expr2 = (c k + d)^(5/2)/Sqrt[k];
Simplify[expr1 == expr2, k > 0]
Out[1]=True
Furthermore, both the LeafCount and the Depth of expr2
are smaller:
In[2]:={LeafCount[#], Depth[#]} & /@ {expr1, expr2}
Out[2]={{19, 6}, {15, 5}}
However Simplify with LeafCount as the ComplexityFunction
leaves expr1 unchanged, while Simplify with Depth as the
ComplexityFunction changes expr1 to expr2:
In[3]:=Simplify[expr1, k > 0,
ComplexityFunction -> LeafCount] // InputForm
Out[3]//InputForm=Sqrt[c + d/k]*(d + c*k)2
In[4]:=Simplify[expr1, k > 0,
ComplexityFunction -> Depth] // InputForm
Out[4]//InputForm=(d + c*k)^(5/2)/Sqrt[k]
What explains this difference in behavior? Changing the order
of calculations 3 and 4 has no effect.  Since  calculation 2
shows that the form expr2 would be preferred if it were tried,
while calculation 4 shows that the form expr2 is tried when
the ComplexityFunction is Depth, it seems that the choice of
ComplexityFunction affects the set of transformations tried
by Simplify.
For the record, I am using $Version 5.2 for Linux (June 20, 2005)
Steve
- Follow-Ups:
- Re: ComplexityFunction affects set of transformations tried by Simplify
- From: Andrzej Kozlowski <akoz@mimuw.edu.pl>
 
 
 - Re: ComplexityFunction affects set of transformations tried by Simplify