Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: Re: Surprising FullSimplify result
  • Next by Date: Re: ReplaceAll and ReplaceRepeated Strange Behavior
  • Previous by thread: Re: ReplaceAll and ReplaceRepeated Strange Behavior
  • Next by thread: Re: ReplaceAll and ReplaceRepeated Strange Behavior