Re: Unexpected behavior of Simplify
- To: mathgroup at smc.vnet.net
- Subject: [mg63257] Re: Unexpected behavior of Simplify
- From: Bill Rowe <readnewsciv at earthlink.net>
- Date: Tue, 20 Dec 2005 23:35:41 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
On 12/20/05 at 4:19 AM, gleam at flashmail.com wrote: >What is the explanation for this behavior? <code changed to InputForm for readability> >In[1]:= >ClearAll[a, b, c] >expr = c^4*b^2 + a^4*b^2 + c^2*a^2*(1 - 2*b^2); >Simplify[expr] >Simplify[expr /. {a -> b, b -> a}] /. {a -> b, b -> a} >Out[3]= >b^2*a^4 + (1 - 2*b^2)*c^2*a^2 + b^2*c^4 >Out[4]= >a^2*c^2 + b^2*(a^2 - c^2)^2 >The second application of the replacement is merely for clarity; >the unexpected behavior is present without it. What behaviour were you expecting? What is it you want? Are you trying to swap a and b everywhere in the expression, i.e., In[5]:= (expr/.{a->z, b->y})/. {y->a, z->b} Out[5]= a^2*b^4 + (1 - 2*a^2)*c^2*b^2 + a^2*c^4 Or perhaps you intended for the first rule to be applied then the second, i.e., In[11]:= (expr/.a->b)/.b->a Out[11]= a^6 + c^4*a^2 + (1 - 2*a^2)*c^2*a^2 Clearly, the results depend on the details in which the rules are applied. I am sure this is documented in the Mathematica Book somewhere. But rather than rely on details I find difficult to recall when needed, it seems to me far better to write code to explicitly require a specific application order. In general, there isn't any significant performance hit and it is considerably easier to determine what was meant and maintain the code. -- To reply via email subtract one hundred and four