MathGroup Archive 2010

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

Search the Archive

Re: ReplaceAll and ReplaceRepeated Strange Behavior

Matching expressions in denominators is always a small problem for beginners
because the intuitive pattern does not appear in the underlying expression.

eff1 = (L*(-L*mu + L*Cos[b]*Cot[b]))/(dm*Pi*(L*Cos[b] + L*mu*Cot[a]));

Look at the FullForm expressions:


dm*Pi -> L/Tan[a] // FullForm 

The correct rule is:

1/(dm*Pi) -> 1/(L/Tan[a]) // FullForm 

eff1 /. {1/(dm*Pi) -> 1/(L/Tan[a])} 

Concerning posting code:

I usually select and copy the expression within a cell using the right click
context menu CopyAs/InputText and then paste that into the posting. I prefer
not to have In-Out numbers because they make it difficult to copy from a
posting back into a notebook (or else I don't know how to do it.)

The only problem I have is when I have a series of statements within one
cell with line returns between statements. Sometimes the line returns get
removed in the posting and I'm not sure how to stop that, other than
inserting extra blank lines.

David Park
djmpark at 

From: blamm64 [mailto:blamm64 at] 

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


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)

  • Prev by Date: Re: A distribution problem using Mathematica
  • Next by Date: Re: Forcing Mathematica to use standard fonts
  • Previous by thread: Re: ReplaceAll and ReplaceRepeated Strange Behavior
  • Next by thread: Re: ReplaceAll and ReplaceRepeated Strange Behavior