Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2008

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

Search the Archive

Re: Combining pure functions to produce a new pure function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg89723] Re: Combining pure functions to produce a new pure function
  • From: dh <dh at metrohm.ch>
  • Date: Thu, 19 Jun 2008 05:41:44 -0400 (EDT)
  • References: <g3aomo$3o$1@smc.vnet.net>


Hi Mac,

look at Out[66]: there seems to be a variable biomass$491 without a 

value, that anticipates the evaluation of the result. If I define the 

function e.g.:

forwardmodel[x1_,x2_]:=x2;

h[forwardmodel["letoan",#]&,forwardmodel["saatchiphv",#]&][100]

everything works as expected.

hope this helps, Daniel



Mac wrote:

> I have a function where one of the arguments is supposed to be a list

> of pure functions. Tyhis is useful for an algorithm that can run using

> multiple input functions. Based on a previous post some time ago

> 

> http://groups.google.com/group/comp.soft-sys.math.mathematica/browse_thread=

> /thread/b1faadec497c657d/5cc40d169d8992b4?lnk=gst&q=pure+function+#5cc4=

> 0d169d8992b4

> 

> a method was proposed to address this. If I apply this method to list

> arguments I get the following code and results:

> 

> In[60]:= h[f1_, f2_] :=

>  Function[x,

>   Evaluate[{f1[x], f2[x]} /.

>     HoldPattern[Function[a_, b_]] -> Function[a, b][x]]]

> 

> Combine two simple pure functions - works as expected

> 

> In[58]:= h[# + 1 &, # + 2 &]

> %[1]

> 

> Out[58]= Function[x$, {1 + x$, 2 + x$}]

> 

> Out[59]= {2, 3}

> 

> Combine two custom functions and I get the internal details of one

> function and with the second one evaluated properly

> 

> In[66]:= h[forwardmodel["letoan", #] &, forwardmodel["saatchiphv", #]

> &]

> %[100]

> 

> Out[66]= Function[x$, {If[-10. - 32./biomass$491^0.434294 <= -15,

>    10 Log[10, 10^(\[Gamma]1$491/10) Sin[27 =B0]],

>    10 Log[10, 10^(\[Gamma]2$491/10) Sin[27 =B0]]],

>   If[x$ > 2, -35.01 + 4.296 Log[x$], -35.01 + 4.296 Log[2]]}]

> 

> Out[67]= {If[-10. - 32./biomass$491^0.434294 <= -15,

>   10 Log[10, 10^(\[Gamma]1$491/10) Sin[27 =B0]],

>   10 Log[10, 10^(\[Gamma]2$491/10) Sin[27 =B0]]], -15.2262}

> 

> I can see that this effect is due to the evaluations of the function

> 

>  forwardmodel["letoan", #] &

> 

> so that the output no longer depends on the pure function variable $x.

> Note that separately these functions work as expected. Here some

> predicted radar backscatter coefficients.

> 

> In[69]:= forwardmodel["letoan", #] &[100]

> forwardmodel["saatchiphv", #] &[100]

> 

> Out[69]= -17.6312

> 

> Out[70]= -15.2262

> 

> Can annybody suggest a general solution ?

> 

> Many thanks

> 

> Mac

> 

> 

> 

> 





-- 



Daniel Huber

Metrohm Ltd.

Oberdorfstr. 68

CH-9100 Herisau

Tel. +41 71 353 8585, Fax +41 71 353 8907

E-Mail:<mailto:dh at metrohm.com>

Internet:<http://www.metrohm.com>




  • Prev by Date: Bug in multiple integrals with delta function
  • Next by Date: Re: Re: snippets
  • Previous by thread: Re: Combining pure functions to produce a new pure function
  • Next by thread: Re: Combining pure functions to produce a new pure function