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)