MathGroup Archive 2013

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

Search the Archive

Re: How do you control evaluation when using apply?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg130806] Re: How do you control evaluation when using apply?
  • From: Roland Franzius <roland.franzius at uos.de>
  • Date: Fri, 17 May 2013 04:34:46 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-outx@smc.vnet.net
  • Delivered-to: mathgroup-newsendx@smc.vnet.net
  • References: <kn21qq$1hl$1@smc.vnet.net>

Am 16.05.2013 09:28, schrieb Brentt:
> Why does this work
>
> In[0]: = jacobianFunction[func_, vars_List] := Module[{f},
>     f = Function[Evaluate[vars], Evaluate[D[func, {vars}]]];
>    f
>     ];
> jacobianFunction[{Sin[x y], Cos[x + y]}, {x, y}] @@ {10, 2}
>
> out[0]:= {{2 Cos[20], 10 Cos[20]}, {-Sin[12], -Sin[12]}}
>
> But this does not (the goal is to make the function take a point as an
> argument)
>
>
> In[0]: = jacobianFunction[func_, vars_List] := Module[{f},
>     f = Evaluate[Function[Evaluate[vars], Evaluate[D[func, {vars}]]]];
>    f@@ # &
>     ];
> jacobianFunction[{Sin[x y], Cos[x + y]}, {x, y}][{10, 2}]
>
>
>
> I can't get f@@ # & to evaluate properly (I've tried wrapping it in
> ReleaseHold and evaluate statements, nothing seems to get it to evaluate.
>
> I know I can just rewrite the function to take the point but I'm just
> curious why it won't work.
>
>


Do your evaluation during function body contruction and replace the 
Function-head after evaluation

jacobianFunction[func_, vars_List] :=
Module[ {function},
( function[ {vars}, D[func, {vars} ] /.function->Function )]


or apply the Function head to a List construct

jacobianFunction[func_, vars_List] :=
Function@@ { {vars}, D[func, {vars} ] }

More easy define a function generator once for all

MakeFunction = (Set@@{#1,Function@@{##2}}&);

MakeFunction[Subscript[f,1],{x,y},D[f[x,y],x]];

Subscript[f,1]

	Function[{x, y}, Derivative[1, 0][f][x, y]]

-- 

Roland Franzius



  • Prev by Date: Overriding the single quote (')
  • Next by Date: Re: Work on Basic Mathematica Stephen!
  • Previous by thread: Re: How do you control evaluation when using apply?
  • Next by thread: Overriding the single quote (')