MathGroup Archive 2011

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

Search the Archive

Re: More robust pattern based replacement rules?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg120998] Re: More robust pattern based replacement rules?
  • From: Irretrev Unable <irdeva_ble at yahoo.com>
  • Date: Sun, 21 Aug 2011 05:31:38 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <1313198560.22381.YahooMailClassic@web45110.mail.sp1.yahoo.com>
  • Reply-to: Irretrev Unable <irdeva_ble at yahoo.com>

Daniel sent me an excellent suggestion which I thought I would pass on to the group. Daniel's email recommending PolynomialReduce[] is below.


Here's my variant of his approach:

simpMethod[expr_] := Module[{pExpr},

 pExpr = PolynomialReduce[expr, a*b - c*d, {b, d}];
 pExpr[[1]].{e} + pExpr[[2]]
]

simpMethod[a*b - c*d]
Out[54]= e

simpMethod[c*d - a*b]
Out[55]= -e

simpMethod[2*a*b - c*d]
Out[56]= c*d + 2*e

simpMethod[a*b - 2*c*d]
Out[57]= -c*d + e

simpMethod[q*a*b - r*c*d] // Simplify
Out[58]= e*q + c*d*(q - r)


--- On Tue, 8/9/11, Daniel Lichtblau <danl at wolfram.com> wrote:

> From: Daniel Lichtblau <danl at wolfram.com>
> Subject: Re: More robust pattern based replacement rules?
> To: "Irretrev Unable" <irdeva_ble at yahoo.com>
> Date: Tuesday, August 9, 2011, 1:04 PM
> 
> ----- Original Message -----
> > From: "Irretrev Unable" <irdeva_ble at yahoo.com>
> > To: mathgroup at smc.vnet.net
> > Sent: Tuesday, August 9, 2011 6:20:42 AM
> > Subject: More robust pattern based
> replacement rules?
> > I'm trying to come up with a method for creating
> somewhat more robust
> > pattern based replacement rules. I've cooked up the
> following simple
> > example:
> > 
> > simpRule = a b v___ - c d v___ -> e v
> > 
> > a b - c d /. simpRule
> > 
> > produces e
> > 
> > - a b + c d /. simpRule
> > 
> > produces - a b + c d
> > 
> > Is there a way to write one simpRule that can handle
> both cases?
> > 
> > (The actual rule I'm trying to create has to match
> more terms with a
> > leading coefficient that is more complicated than a
> simple minus sign,
> > but I figure that for an initial post I should stick
> with a simple
> > question.)
> > 
> > Thanks in advance.
> 
> PolynomialReduce might be a better function for your
> needs.
> 
> In[28]:= e1 = a*b - c*d;
> e2 = c*d - a*b;
> rule = e - (a*b - c*d);
> PolynomialReduce[e1, rule, {a, b, c, d}][[2]]
> PolynomialReduce[e2, rule, {a, b, c, d}][[2]]
> 
> Out[31]= e
> 
> Out[32]= -e
> 
> Daniel Lichtblau
> Wolfram Research
> 
> 




  • Prev by Date: Re: NDSolve with square root
  • Next by Date: Re: NDSolve with square root
  • Previous by thread: Re: More robust pattern based replacement rules?
  • Next by thread: Just another Mathematica "Gotcha"