Re: Naming pieces of patterns

*To*: mathgroup at smc.vnet.net*Subject*: [mg29847] Re: [mg29816] Naming pieces of patterns*From*: BobHanlon at aol.com*Date*: Fri, 13 Jul 2001 04:19:27 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

In a message dated 2001/7/12 3:03:40 AM, fischerc at itam.cas.cz writes: >How can I as simply as possible use "substitutions" >1. >-(I/(2 a)) /. I/(2 a) -> A >does not work, while >(I/(2 a)) /. I/(2 a) -> A >works well > >2. >{(a + b), -(a + b)}/. a + b -> e >gives >{e, -a - b} >instead of {e,-e} > >3. >{-Sqrt[a + b], 1/Sqrt[a + b]} /. Sqrt[a + b] -> e >gives >{-e,1/Sqrt[a + b]} > >4. >{I, 2 I, -I} /. I -> J >gives >{J, 2 \[ImaginaryI], -\[ImaginaryI]} > >I know _why_ these cases do not work, but I would like to know, if there >is a possibilty to use a common pattern rule to substitute all >occurences of an expression. > In general, use an atomic expression on the LHS of a rule -(I/(2 a)) /. a -> I/(2A) -A {(a + b), -(a + b)} /. a -> e-b {e, -e} {-Sqrt[a + b], 1/Sqrt[a + b]} /. a -> e^2-b {-Sqrt[e^2], 1/Sqrt[e^2]} Simplify[%, e >= 0] {-e, 1/e} Use a rule that is general enough to encompass all of the cases of interest {I, 2 I, -I} /. Complex[0, n_] -> n*J {J, 2*J, -J} {I, 2 I, -I} /. Complex[a_, n_] -> a+n*J {J, 2*J, -J} Bob Hanlon Chantilly, VA USA