Re: Just another Mathematica "Gotcha"
- To: mathgroup at smc.vnet.net
- Subject: [mg120806] Re: Just another Mathematica "Gotcha"
- From: Heike Gramberg <heike.gramberg at gmail.com>
- Date: Wed, 10 Aug 2011 06:49:35 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201108091119.HAA15770@smc.vnet.net>
Not a gotcha IMO, just a case of /. taking precedence over //, so the first example is interpreted as Series[a + (b1 + b2) x, {x, 0, 1}] // (Normal /. b2 -> 0) and the second one as (Series[a + (b1 + b2) x, {x, 0, 1}] /. {b2 -> 0}) // Normal You can check this by looking at TracePrint: First case: TracePrint[Series[a + (b1 + b2) x, {x, 0, 1}] // Normal /. b2 -> 0] out: (Normal/. b2->0)[Series[a+(b1+b2) x,{x,0,1}]] Normal/. b2->0 ReplaceAll Normal b2->0 Rule b2 0 b2->0 =85... Second case TracePrint[Series[a + (b1 + b2) x, {x, 0, 1}] /. {b2 -> 0} // Normal] out: Normal[Series[a+(b1+b2) x,{x,0,1}]/. {b2->0}] Normal Series[a+(b1+b2) x,{x,0,1}]/. {b2->0} ReplaceAll Series[a+(b1+b2) x,{x,0,1}] Series a+(b1+b2) x Plus =85. In both cases, the ReplaceAll is evaluated first Heike. On 9 Aug 2011, at 13:19, AES wrote: > Seems as if the following two expression should yield the same output > -- seems that way to me anyway -- but they don't. I'll hide the > actual outputs down below so Mathematica gurus (or "ordinary users") > can make their predictions as to which one does what. > > In[1]:= Series[a+(b1+b2)x,{x,0,1}] //Normal /.{b2->0} > > In[2]:= Series[a+(b1+b2)x,{x,0,1}] /.{b2->0} //Normal > > My conclusions: > > 1) By any normal rules of interpretation or ordinary interpretations > of these statements, they both should do the same same thing. > > 2) This is just another Mathematica "Gotcha" -- and not a > particularly forgivable one. > > > > > > > > > > > > > > > > Out[1]= a+(b1+b2) x > > Out[2]= a+b1 x >
- References:
- Just another Mathematica "Gotcha"
- From: AES <siegman@stanford.edu>
- Just another Mathematica "Gotcha"