Re: Re: Multiple Sums in Mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg53733] Re: Re: [mg53696] Multiple Sums in Mathematica
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Tue, 25 Jan 2005 05:03:45 -0500 (EST)
- Reply-to: hanlonr at cox.net
- Sender: owner-wri-mathgroup at wolfram.com
Clear[f];
f[x__] := Module[{xl=Flatten[{x}]},
Times@@(Tr /@
({#,Range[Length[xl]]*#,#!,Table[C[k],{k,Length[xl]}]^#}&[xl]))];
f[i1,i2,i3]
(i1 + i2 + i3)*(i1 + 2*i2 + 3*i3)*(C[1]^i1 + C[2]^i2 +
C[3]^i3)*(i1! + i2! + i3!)
It also works when the argument is a list instead of a sequence
f[{i1,i2,i3,i4}]
(i1 + i2 + i3 + i4)*(i1 + 2*i2 + 3*i3 + 4*i4)*
(C[1]^i1 + C[2]^i2 + C[3]^i3 + C[4]^i4)*
(i1! + i2! + i3! + i4!)
Bob Hanlon
>
> From: Sebastian Brandt <sbrandt at physics.wustl.edu>
To: mathgroup at smc.vnet.net
> Date: 2005/01/24 Mon PM 09:19:09 EST
> To: hanlonr at cox.net
> Subject: [mg53733] Re: [mg53696] Multiple Sums in Mathematica
>
> Dear Bob Hanlon,
>
> Thank you very much for your help! Your code works fine, but now I have
the (for you probably trivial) problem of how to define f as a function of an
arbitrary number of arguments.
>
> For example, f is supposed to be something like this:
>
> f[i1_, i2_, i3_, ..., iM_] =
>
> (i1 + i2 + .... + iM)
> * (1*i1 + 2*i2 + ... + M*iM)
> * (i1! + i2! + i3! + ... + iM!)
> * (C[1]^i1 * C[2]^i2 * ... * C[M]^iM)
>
> In the last part, the C[1], C[2], ..., C[M] are some constants.
>
> Sorry for bothering you with this question, but I would really appreciate it if
you could help me once more.
>
> Regards,
>
> Sebastian
>
> -------------------------------------------------
> Sebastian Brandt
> -------------------------------------------------
> Physics Department, CB 1105
> Washington University
> 1 Brookings Drive
> St. Louis, MO 63130-4899, USA
> -------------------------------------------------
> +1-314-935-7507 (phone)
> +1-314-935-6219 (fax)
> sbrandt at physics.wustl.edu
> -------------------------------------------------
>
> ----- Original Message -----
> From: Bob Hanlon <hanlonr at cox.net>
To: mathgroup at smc.vnet.net
> Date: Sunday, January 23, 2005 8:20 am
> Subject: [mg53733] Re: [mg53696] Multiple Sums in Mathematica
>
> > Presumably, you intend f to be a function of the indices.
> >
> > multiSum[f_, n_Integer, maxIndex_:M, index_String:"i"] :=
> > Module[{var,k},
> > var=ToExpression[Table[index<>ToString[k],{k,n}]];
> > Fold[Sum[#1,{#2,1,maxIndex}]&,
> > f[Sequence@@var],Reverse[var]]];
> >
> > multiSum[f,3]
> >
> > Sum[f[i1, i2, i3], {i1, 1, M}, {i2, 1, M}, {i3, 1, M}]
> >
> > multiSum[f,3,r]
> >
> > Sum[f[i1, i2, i3], {i1, 1, r}, {i2, 1, r}, {i3, 1, r}]
> >
> > multiSum[f,3,M,"k"]
> >
> > Sum[f[k1, k2, k3], {k1, 1, M}, {k2, 1, M}, {k3, 1, M}]
> >
> >
> > Bob Hanlon
> >
> > >
> > > From: sbrandt at physics.wustl.edu (Sebastian Brandt)
To: mathgroup at smc.vnet.net
> > > Date: 2005/01/23 Sun AM 02:02:26 EST
> > > To: mathgroup at smc.vnet.net
> > > Subject: [mg53733] [mg53696] Multiple Sums in Mathematica
> > >
> > > Hello,
> > >
> > > I want to perform a nested sum, where the number of summations is
> > not> specified. I.e., I am looking for a way to implement the sum
> > >
> > > sum[ f, {i1, 1, M}, {i2, 1, M}, ..., {in, 1, M} ]
> > >
> > > Does anbody know how to do this for arbitrary n?
> > >
> > > Regards,
> > >
> > > Sebastian Brandt
> > >
> > >
> >
> >
>
>