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.)
> >
>
> 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"