Re: how to make conditional summation
- To: mathgroup at smc.vnet.net
- Subject: [mg55580] Re: how to make conditional summation
- From: "Dan" <dantopa at gmail.com>
- Date: Wed, 30 Mar 2005 03:21:17 -0500 (EST)
- References: <d2b4ki$76i$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Xiao Jun Jun wrote: > Hi, All, > > Say, Sum[f[m],{m,-N,N}] with N != 0 > Any suggestions? > > Regards. > Xun Hi Xun: I have a couple of ideas. First, I hope you have noticed by now that capital N (the numeric operator) is a reserved symbol. 1. If you can compute f[0] (no error messages, no time penalty), the simplest way is to Map the function across the list and subtract the zero case. m = Table[i, {-n,n}] f/@m - f[0] 2. Create a list of m values without the zero. There are a few ways to do this. Pick the one you are most comfortable with. a. m1 = Table[i,{i,_n,N}]; m = Select[m1,#!=0&]; b. m = Join[Table[i, {i,-n,-1}],Table[i, {i,n}]] Map the function over the list: f/@m 3. If you had a list and more than one selection criteria then I would use this. (* exclude 0, exclude odd numbers *) fcn=(#!=0 && EvenQ[#])& m = Range[-3,3]; sm = 0; (* clear summation variable *) Do[ (* loop through list m *) If[fcn[m[[1]]],sm+=f[m[[i]]; (* apply criterion *) ,{i, Length[m]}] sm output = f[-2] + f[2] Notice that for integer values you can build the list using Range: m = Range[-n,n] Hope this helps. Dan