Re: Pattern Matching

• To: mathgroup at smc.vnet.net
• Subject: [mg24061] Re: Pattern Matching
• From: "David Bailey" <db at salford-software.com>
• Date: Thu, 22 Jun 2000 01:01:53 -0400 (EDT)
• Organization: University of Salford, Salford, Manchester, UK
• References: <8hsu3g\$dh4@smc.vnet.net> <8i1suj\$jls@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Allan Hayes <hay at haystack.demon.co.uk> wrote in message
news:8i1suj\$jls at smc.vnet.net...
> Johannes,
>
>
>
> We can avoid this by using HoldPattern:
>
>
> x[1] b[1] + x[2] b[2] /.
>   HoldPattern[Plus[Times[x[_],  b[_]] ..]] -> z
>
>         z
>
>
> However it does seem odd that, in spite of (*1*), we get
>
> x * b[1] + x* b[2] /.
>   (x* b[_]) .. -> z
>
>         2 z
>
> --
> Allan

I experimented with various constructs based on HoldPattern and Repeated,
but without success. I think the easiest way to isolate terms of the form
x[i]b[i] is to proceed in stages. First wrap the terms of interest in a
function - say f - and then merge them together:

ss = x[1]b[1] + x[2]b[2] + x[3]b[3] + x[10]b[5]

ss /. x[n_]b[n_] -> f[x[n]b[n]] //.
f[a_, a1___] + f[b_, b1___] -> f[a, a1, b, b1]

This gives:

f[b[3] x[3], b[1] x[1], b[2] x[2]] + b[5] x[10]

At this point you can use a replacement such as f[__]->v, or you can do
something useful to the arguments of  f.

David Bailey
Salford Software

```

• Prev by Date: Mean of Geometric and Negative Binomial distributions
• Next by Date: Re: Re:two dimensional distribution
• Previous by thread: Re: Pattern Matching
• Next by thread: First Order Differential Equation