Re: Programing operations with lists
- To: mathgroup at smc.vnet.net
- Subject: [mg50880] Re: Programing operations with lists
- From: Bill Rowe <readnewsciv at earthlink.net>
- Date: Sat, 25 Sep 2004 01:55:29 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
On 9/24/04 at 4:41 AM, guillerm at aida.usal.es (Guillermo Sanchez) wrote: >I have two lists with this pattern >list1={{a1 , b1}, ..., {ai , bi}, ...}; >list2={c1, ..., c(j-1), cj, ...}; >and a function f[x] (ie: f[x_] = 0.2 x); >I would like grouping and sum the product bi f[ai] where C(j-1)<ai< >cj >I show it with an example: >list1 = {{0.71, 7378}, {1.6, 768}, {2, 2269}, {2.05, 0}, {2.35, 0}, >{2.4, 2608}, {2.6, 193}, {2.8, 4187}, {2.85, 204}, {2.95, 134}, >{3.2,776}, {3.25, 24}, {3.6, 6209}, {3.65, 0}, {3.7, 2809}, {3.95, >1923}, {4,2627}, {4.1, 25}, {4.15, 1}, {4.2, 0}, {4.25, -15}, >{4.35, 1863}, {4.4, 1797}, {4.45, 7533}, {4.5, 0}, {4.55, 53}, >{4.7, 12045}, {4.9, 7304}, {4.95, 34}}; >list2 = {0.71, 3.2, 4, 4.5, 5} >The solution should be: >{{7378 f[0.71] + .. +134 f[2.95]}, ... , {53 f[4.55]+...+34 >f[4.95]}} It looks to me like the following solves the problem <<Statistics` fsum[x_List, y_List, f_] := Module[{s = RangeLists[x[[All,1]], y], sp}, sp[data_, lis_] := Select[data, MemberQ[lis, First[ #1]] & ]; s = (sp[list1, #1] & ) /@ DeleteCases[s, {}]; Total /@ Table[ (Last[#1]*f[First[#1]] & ) /@ s[[n]], {n, Length[s]}]] fsum[list1, list2, f] {7378*f[0.71] + 768*f[1.6] + 2269*f[2] + 2608*f[2.4] + 193*f[2.6] + 4187*f[2.8] + 204*f[2.85] + 134*f[2.95], 776*f[3.2] + 24*f[3.25] + 6209*f[3.6] + 2809*f[3.7] + 1923*f[3.95], 2627*f[4] + 25*f[4.1] + f[4.15] - 15*f[4.25] + 1863*f[4.35] + 1797*f[4.4] + 7533*f[4.45], 53*f[4.55] + 12045*f[4.7] + 7304*f[4.9] + 34*f[4.95]} -- To reply via email subtract one hundred and four