Re: Replacement rule limitations

*To*: mathgroup at smc.vnet.net*Subject*: [mg110564] Re: Replacement rule limitations*From*: Bill Rowe <readnews at sbcglobal.net>*Date*: Sat, 26 Jun 2010 03:08:55 -0400 (EDT)

On 6/25/10 at 7:26 AM, stevebg at ROADRUNNER.COM (S. B. Gray) wrote: >Several responders have told me that replacement rules are the way >to simplify complex expressions and to reduce redundant computations >(?). >So let's try an arbitrary expression as a very simple example of >something that could be much more complicated: >exp = 1/Sqrt[ >x^2+y^2+z^2] - (x^2+y^2+z^2) + (x^2+y^2+z^2)^( 1/3) /. >x^2+y^2+z^2->dd This gives >1/Sqrt[dd] + dd^(1/3)-x^2-y^2-z^2 which is not that useful. Consider In[1]:= FullForm[-(x^2 + y^2 + z^2)] Out[1]//FullForm= Plus[Times[-1,Power[x,2]],Times[-1,Power[y,2]],Times[-1,Power[z,2]]] That is after Mathematica evaluates -(x^2+y^2+z^2), there is nothing left to match (x^2+y^2+z^2). >But if I introduce a superfluous multiplier "s": >exp = 1/Sqrt[x^2+y^2+z^2] - >s(x^2+y^2+z^2) + (x^2+y^2+z^2)^( 1/3) /. {x^2+y^2+z^2->dd, >s->1} I get >1/Sqrt[dd] + dd^(1/3) - dd which is better. Asking for Right. Now In[2]:= FullForm[-s (x^2 + y^2 + z^2)] Out[2]//FullForm= Times[-1,s,Plus[Power[x,2],Power[y,2],Power[z,2]]] Now there is a match for (x^2+y^2+z^2) and for s. So, the replacement occurs and you get the desired result. >Unless I am missing something important (it wouldn't be the first >time!), replacement rules are not a good substitute for real >intermediate variables. Replacement rules will work. But you have to understand they are literal replacements which occur after other evaluation. And if the other evaluation alters the form of what is being replaced, then no replacement occurs. >This does not even address a feature I'd like to see in Mathematica in >which it would figure out what subexpressions appear repeatedly and >make up its own simplifying intermediate variables. This could be >incorporated into FullSimplify. I don't think so. Consider what is required to find all sub-expressions. The complexity of the problem rises very rapidly with the number of things. Incorporating this into FullSimplify would certainly increase the time for FullSimplify to work unacceptably for all but fairly simple expressions. And those are the ones where you likely don't really need FullSimplify.