MathGroup Archive 2007

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

Search the Archive

Re: Re: Re: pure function to generate a list of

  • To: mathgroup at smc.vnet.net
  • Subject: [mg77293] Re: [mg77192] Re: [mg77090] Re: pure function to generate a list of
  • From: Bob Hanlon <hanlonr at cox.net>
  • Date: Wed, 6 Jun 2007 07:18:34 -0400 (EDT)
  • Reply-to: hanlonr at cox.net

Clear[f]

f[a_, b_, upperLimits_List] :=
  NIntegrate[Sqrt[a*x + b], {x, 0, #}] & /@ upperLimits;

f[2, 3, {0.1, 0.5, 0.9}] == {NIntegrate[Sqrt[2 x + 3], {x, 0, 0.1}],
  NIntegrate[Sqrt[2 x + 3], {x, 0, 0.5}],
  NIntegrate[Sqrt[2 x + 3], {x, 0, 0.9}]}

True


Bob Hanlon

---- Ruth <ruth.lazkoz at ehu.es> wrote:
>
> Thanks to everyone. Bill's was the purest solution of them all (if I
> understand correctly the meaning of purity). However, my example was to=

> naive (linear).
>
> I would like to have a new function with basically the same purity as
> Bill's solution
>
> f = #1 Block[{x}, NIntegrate[x, {x, 0, #}] & /@ #2] &;
>
> but this time to be able to produce the equivalent of
>
> {NIntegrate[Sqrt[2x+3], {x, 0, 0.1}], NIntegrate[Sqrt[2x+3], {x, 0, 0.5}]=
,
> NIntegrate[Sqrt[2x+3], {x, 0, 0.9}]}
>
> when evaluating f[2,3,{0.1,0.5,0.9}]
>
> Thanks again.
>
>
> Bill Rowe escribi=C3=B3:
> > On 6/2/07 at 4:17 AM, ruth.lazkoz at ehu.es (Ruth Lazkoz Saez) wrote:
> >
> >  
> >> I am trying to brush up a long code I have to make it more compliant
> >> with the spirit of functional programming. I do not like to hear
> >> that the kind of calculations I do should run faster in C, because I
> >> suspect that if I managed to write good code in Mathematica it
> >> should be as fast. So I have to go and improve my code chunk by
> >> chunk.
> >>    
> >
> >  
> >> My first problem is that I want to generate a pure function say f,
> >> which, so that f[2, {0.1, 0.5, 0.9}] gives me the same output as
> >>    
> >
> >  
> >> {NIntegrate[2x, {x, 0, 0.1}], NIntegrate[2x, {x, 0, 0.5}],
> >> NIntegrate[2x, {x, 0, 0.9}]}
> >>    
> >
> > This will do the trick
> >
> > f = #1 Block[{x}, NIntegrate[x, {x, 0, #}] & /@ #2] &;
> >
> > Checking:
> >
> > In[14]:= f[2, {0.1, 0.5, 0.9}]
> >
> > Out[14]= {0.01,0.25,0.81}
> >
> > In[15]:= f[3, {0.1, 0.5, 0.9}]
> >
> > Out[15]= {0.015,0.375,1.215}
> > --
> > To reply via email subtract one hundred and four
> >
> >
> >  
>
>
>
>



  • Prev by Date: Re: Dynamic 2D plotting in V6
  • Next by Date: Re: $CellContext
  • Previous by thread: Dynamic 2D plotting (V6) - Resend
  • Next by thread: Customising syntax colouring