MathGroup Archive 2004

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

Search the Archive

Re: Programing operations with lists

  • To: mathgroup at smc.vnet.net
  • Subject: [mg50864] Re: [mg50856] Programing operations with lists
  • From: "Maxim A. Dubinnyi" <maxim at nmr.ru>
  • Date: Sat, 25 Sep 2004 01:55:02 -0400 (EDT)
  • References: <200409240841.EAA21761@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

For example:

(In[1])  *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};*

(In[3])  *IntervalList = Interval /@ Partition[list2, 2, 1]*
(Out[3]) {Interval[{0.71, 3.2}], Interval[{3.2, 4}], Interval[{4, 4.5}],
          Interval[{4.5, 5}]}

(In[4])  *TermsList =
           Cases[
             list1,
             {ai_/;IntervalMemberQ[#,ai],bi_} -> bi*f[ai]
           ] &
         /@ IntervalList;*

(In[5])  *AnswerList = Plus @@@ TermsList*
(Out[5]) {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],
          776 f[3.2] + 24 f[3.25] + 6209 f[3.6] + 2809 f[3.7] +
          1923 f[3.95] + 2627 f[4],
          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]}

Guillermo Sanchez wrote:

>Dear group,
> 
>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]}}
> 
>Thanks
> 
>Guillermo
>
>  
>



  • Prev by Date: Re: trimming a string
  • Next by Date: Re: Programing operations with lists
  • Previous by thread: Re: Programing operations with lists
  • Next by thread: Re: Programing operations with lists