Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

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

Search the Archive

Re: Grouping similar indices together in an expression

  • To: mathgroup at smc.vnet.net
  • Subject: [mg65246] Re: [mg65242] Grouping similar indices together in an expression
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Wed, 22 Mar 2006 06:13:36 -0500 (EST)
  • References: <200603211246.HAA19581@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

On 21 Mar 2006, at 13:46, David Sanders wrote:

> Hi,
>
> I am a newbie in Mathematica, and am trying to do the following.
>
> I have terms which look like
> a[i] a[j] b[i] b[j]
>
> I need to apply a function F, for which I need to group the different
> indices (by which I mean i, j) together as follows:
>
> F(a[i] a[j] b[i] b[j]) = F(a[i] b[i]) F(a[j] b[j])
>
> I do not in general know how many different indices there might be  
> in a
> term.  E.g. I might have
> a[i] a[j] a[k] b[j]
>
> Could somebody please give me a hint as to how to do this?
>
> Thanks,
> David.
>
As long as you do not mind the order of the terms being re-arranged,  
the following should do what you want:


GroupTerms[m_Times, f_] := Times @@ Apply[f, Split[Sort[List @@ m,  
OrderedQ[{#1[[1]], #2[[1]]}] & ],
      #1[[1]] === #2[[1]] & ], {1}]

For example:



GroupTerms[a[1]*a[2]*b[1]*b[2]*c[1]*c[3], f]


f[c[3]]*f[a[2], b[2]]*f[a[1], b[1], c[1]]


which separates all terms according to the "index" .

Andrzej Kozlowski







  • Prev by Date: Re: Grouping similar indices together in an expression
  • Next by Date: Re: Grouping similar indices together in an expression
  • Previous by thread: Grouping similar indices together in an expression
  • Next by thread: Re: Grouping similar indices together in an expression