Re: replacement x->y except in Exp[x]
- To: mathgroup at smc.vnet.net
- Subject: [mg110851] Re: replacement x->y except in Exp[x]
- From: Leonid Shifrin <lshifr at gmail.com>
- Date: Thu, 8 Jul 2010 07:41:02 -0400 (EDT)
Hi Sebastian,
the simplest in such cases is to use a first rule that does nothing when
expression is what you
don't want to change, Exp[x] in this case:
In[1]:= {Sin[x + Exp[x]], Cos[x], x^2} /. {Exp[x] -> Exp[x], x -> y}
Out[1]= {Sin[E^x + y], Cos[y], y^2}
Be aware though that if you use Replace, this will not work since Replace
works from the
bottom of the expression:
In[2]:= Replace[{Sin[x + Exp[x]], Cos[x], x^2}, {Exp[x] -> Exp[x],
x -> y}, Infinity]
Out[2]= {Sin[E^y + y], Cos[y], y^2}
Here is a more complicated pattern which will work both with ReplaceAll and
with Replace:
In[3]:= {Sin[x + Exp[x]], Cos[x], x^2} /.
h_[left___, x,
right___] /; ! (h === Exp && {left} === {} && {right === {}}) :>
h[left, y, right]
Out[3]= {Sin[E^x + y], Cos[y], y^2}
In[4]:= Replace[{Sin[x + Exp[x]], Cos[x], x^2},
h_[left___, x,
right___] /; ! ((h ===
Power) && ({left} === {E}) && ({right} === {})) :>
h[left, y, right], Infinity]
Out[4]= {Sin[E^x + y], Cos[y], y^2}
Regards,
Leonid
On Thu, Jul 8, 2010 at 11:12 AM, Sebastian <sebhofer at gmail.com> wrote:
> Is it possible to exclude certain patterns from replacements?
> For example I want to replace y for x everywhere except in Exp[x].
>
> TIA Sebastian
>
>