Re: Differentiation w.r.t. elements of lists

*To*: mathgroup at smc.vnet.net*Subject*: [mg79736] Re: [mg79642] Differentiation w.r.t. elements of lists*From*: Carl Woll <carlw at wolfram.com>*Date*: Fri, 3 Aug 2007 06:24:32 -0400 (EDT)*References*: <200708010854.EAA01528@smc.vnet.net>

Daniel Hornung wrote: >Hello, >I don't know if what I want to do is impossible to do neatly (probably not) >or whether I simply chose the wrong way (maybe). > >Basically I want to do componentwise differentiation. Here's a short test >case: >---- >In[1] := h[x_]:=Sum[x[[j]]^2,{j,1,Length[x]}] > >In[2] := dh[x_,i_]=D[h[x],x[[i]]] >>From In[2]:= >Part::pspec: Part specification i is neither an integer nor a list of >integers. Mehr... >Out[2]= 0 > >In[3]:= Assuming[i\[Element]Integers&&i>0&&i<=n,dh[x_,i_]=D[h[x],x[[i]]]] >>From In[3]:= >Part::pspec: Part specification i is neither an integer nor a list of >integers. Mehr... >Out[3]= 0 >---- > >What I would want is a result like dh[x_,i_]=2x[[i]], of course. > >Another, even shorter test case would be > >D[x[[i]], x[[j]]] > >which "should", IMHO, return KroneckerDelta[i,j]. > >Any ideas or hints how to solve these problems in a nice way? > >Thank you in advance, >Daniel Hornung > > I don't think you will get very far working with x as a list. Perhaps the following idea may help: w /: D[w[i_], w[j_], NonConstants -> {w}] := DiscreteDelta[i - j] In[2]:= D[Sum[w[i]^2, {i, n}], w[1], NonConstants -> {w}] Out[2]= 2 UnitStep[n - 1] w[1] Carl Woll Wolfram Research

**References**:**Differentiation w.r.t. elements of lists***From:*Daniel Hornung <ds.mpg.de.thispartismydomain.daniel.hornung@insertdomainhere.com>