MathGroup Archive 2002

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

Search the Archive

Re: Why doesn't this rule work?

James Jennings wanted to know why the following rule has no effect.
In[]:= c-a-b /. n1_. c+n2_. a /; n1==-n2 -> n1 b 
Out[]= -a-b+c 
I don't know why, but I can recommend some ways that do work.
In[]:=  c-a-b+d /. ((n1_.*c+n2_.*a+others_.)/; n1==-n2 )-> n1*b+others
Out[]= d

In[]:=  c-a-b+d /.{ n_.* c - n_.* a -> n*b, -n_.* c + n_.* a -> -n*b}

Out[]= d

However, neither of the above will work in a more complicated example such
as the one below. 
For a more robust solution use rule below.

In[]:=  expr=Exp[p/2+x/2]*c-Exp[(p+x)/2]*a-b+d;
     expr /.((n1_.*c+n2_.*a+others_.) /;Simplify[n1+n2]===0 )-> n1*b+others

Out[]=  -b + d + b*E^(Pi/2 + x/2)

Ted Ersek

Get Mathematica tips, tricks from

  • Prev by Date: Re: confusion with triple integral...
  • Next by Date: a difficult Bessel intergral
  • Previous by thread: Re: Why doesn't this rule work?
  • Next by thread: Re: Why doesn't this rule work?