Re: ReplaceAll and ReplaceRepeated Strange Behavior

*To*: mathgroup at smc.vnet.net*Subject*: [mg111516] Re: ReplaceAll and ReplaceRepeated Strange Behavior*From*: Peter Breitfeld <phbrf at t-online.de>*Date*: Tue, 3 Aug 2010 06:57:09 -0400 (EDT)*References*: <i368o4$r81$1@smc.vnet.net>

If you look at the FullForm of eff1 you get FullForm[eff1] Times[Power[dm,-1],L,Power[Pi,-1],Power[Plus[Times[L,Cos[b]], Times[L,mu,Cot[a]]],-1],Plus[Times[-1,L,mu],Times[L,Cos[b],Cot[a]]]] As you can see, the FullForm contains nowhere dm*Pi, (FullForm is Times[dm,Pi]), so this pattern will never match and can't be replaced. Generally, it's better to replace Symbols instead of expressions, because the FullForm of an expression mostly looks quite different from what you expect and Patterns were always matched against the FullForm. So this will work: eff/.dm->L/(Pi*Tan[a]) Out=((-L mu + L Cos[b] Cot[a]) Tan[a])/(L Cos[b] + L mu Cot[a]) //Peter blamm64 wrote: > Given the expression: > > eff = (L*(-L*mu+dm*Pi*Cos[b]))/(dm*Pi*(dm*Pi*mu+L*Cos[b])) > > After this I enter > > eff /. {dm*Pi -> L/Tan[a]} > > and get a result that does not, for a reason I cannot fathom and > believe to be a bug, replace one instance of dm*Pi. The result of the > evaluation yields > > L*(-L*mu+L*Cos[b]*Cot[a])/(dm*Pi*(L*Cos[b]+L*mu*Cot[a])) > > Precisely the same result occurs with eff //.{dm*Pi->L/Tan[a]} > > Why is the one remaining dm*Pi not replaced with L/Tan[a]? > > In fact, when define manually define eff1 as > > eff1 = (L*(-L*mu + L*Cos[b]*Cot[b]))/(dm*Pi*(L*Cos[b]+L*mu*Cot[a])) > > which is as you can see the result of the first ReplaceAll execution, > and then enter > > eff1 /. {dm*Pi->L/Tan[a]} > > Mathematica returns eff1 unaltered! > > Now, I say this is a bug, so of course I'm probably missing something > and it isn't a bug. I have to jump through syntactic hoops to get the > 'right' answer: > > FullSimplify[eff /.{dm*Pi->L/Tan[a]}]/.{dm*Pi->L/Tan[a]}//FullSimplify > > and FullSimplify[eff /. {dm*Pi->L/Tan[a]} does no good either. > > It is not at all obvious to me what I might be missing with such an > apparently simple replacement. > > By the way, how do you guys copy input or output from Mathematica > notebook into this usergroup window? I had to do all this by hand, > copy it from here into a notebook, and execute the notebook cells just > to make sure I was getting it correct. I ran across this originally > when I was constructing a simple notebook for doing some Acme power > screw calculations. > > -Brian Lamm > (Windows XP x64 Version 2003 SP2, Mathematica 7.0.1) > -- _________________________________________________________________ Peter Breitfeld, Bad Saulgau, Germany -- http://www.pBreitfeld.de