Re: Two related question. Question 1

*To*: mathgroup at smc.vnet.net*Subject*: [mg57606] Re: Two related question. Question 1*From*: Maxim <ab_def at prontomail.com>*Date*: Wed, 1 Jun 2005 06:05:10 -0400 (EDT)*References*: <d7dp2r$qam$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

On Mon, 30 May 2005 01:08:43 +0000 (UTC), Kazimir <kazimir04 at yahoo.co.uk> wrote: > I have two related question. Let me introduce a pure function > > f = #1^2 + #2 & > > Now. I want to make an operation over the function, for example to > find its square and to call the result (the expected function f = (#1^2 > + #2)^2 & ) c: > > c=f^2 > > However, I do not obtain this, as > > c[a,b] > > does not evaluate to (a+b)^2. Can anybody advise me how to obtain > such a function without long substitutions. I would like to obtain > something which is made for derivatives : > > In[11]:= > Derivative[1][f] > > Out[11]= > 2 #1& > > In[12]:= > Derivative[2][f] > > Out[12]= > 2& > > Regards > > Vlad > In principle it should have been possible to do it in a Lisp-like style: In[1]:= square2 = Function[f, Function[{x, y}, f[x, y]^2]] square2 works as an operator, taking a binary function f and returning another binary function. However, this will work only for functions with named parameters (or functions defined as f[x_, y_] = ...); if we use Slot arguments, then the result is correct for Derivative[2, 0] and Derivative[0, 2], but not for mixed partial derivatives: In[2]:= Derivative[1, 1][square2[Function[{x, y}, x^2 + y]]][a, b] Out[2]= 4*a In[3]:= Derivative[1, 1][square2[#^2 + #2&]][a, b] Out[3]= 4*a + 2*(a^2 + b)*((0 & )*Derivative[1][Derivative[1, 0]][#1^2 + #2 & ])[a, b] Also for some reason Derivative can handle SlotSequence only inside Composition: In[4]:= Derivative[1, 0][Composition[#&, g[##]&]] Out[4]= Derivative[1, 0][g][#1, #2] & In[5]:= Derivative[1, 0][g[##]&] Out[5]= 0 & Maxim Rytin m.r at inbox.ru