Re: ReplaceAll and ReplaceRepeated Strange Behavior
- To: mathgroup at smc.vnet.net
- Subject: [mg111512] Re: ReplaceAll and ReplaceRepeated Strange Behavior
- From: "David Park" <djmpark at comcast.net>
- Date: Tue, 3 Aug 2010 06:43:13 -0400 (EDT)
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:
eff1//FullForm
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 comcast.net
http://home.comcast.net/~djmpark/
From: blamm64 [mailto:blamm64 at charter.net]
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)