|
[Date Index]
[Thread Index]
[Author Index]
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
|