Re: Second derivatives
- To: mathgroup at smc.vnet.net
- Subject: [mg128529] Re: Second derivatives
- From: Roland Franzius <roland.franzius at uos.de>
- Date: Sun, 28 Oct 2012 23:41:09 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
- References: <k6flle$6vh$1@smc.vnet.net>
Am 27.10.2012 05:50, schrieb Bruce McGough: > According to the documentation, D[f,{list,n}) should give the n-th order tensor capturing the corresponding Taylor coefficient. This doesn't seem to work in the following example: > > G[x_] := F[h[x]]; > D[G[{x1, x2}], {{x1, x2}, 2}] > > The correct answer is given by > > D[D[G[{x1, x2}], {{x1, x2}}], {{x1, x2}}] > > Note that for an "abstract function H, > > D[H[{x1, x2}], {{x1, x2}, 2}] = D[D[H[{x1, x2}], {{x1, x2}}], {{x1, x2}}] > > Any explanation would be very helpful. As in most such cases, rule [-1]: Garbage in -> garbage out Your definition is mathematically a undefined object in the class of multilinear maps over a differentiable manifold. The resulting output is obtained by formal application of algebraic rules, together with List being "not-a-function" for "D" (D has attribute "Listable"). The input could be refused by a D-parser, subjected to formal rules of predefined object classes. The "wrong" result is explained by the rules for Derivative[n,m], the abstract operator for D with respect to index position = argument positon and numeric value=repeating index The starting point are the polynomial approximations of an expression in powers of Dt[x1] and Dt[x2] You may take the Trace auf your expression: It constains expressions with partial derivatives with respect to something, that is not an identifiable variable. d_{x1,x2} expression Fully expanded: In: Collect[(Dt[Dt[F@h@{x1, x2}]] /. {HoldPattern[Dt[Dt[_]]] :> 0}), {Dt[ x1], Dt[x2]}] Out: Dt[x2]^2* (Derivative[2][F][h[{x1, x2}]]*Derivative[{0, 1}][h][{x1, x2}]^2 + Derivative[1][F][h[{x1, x2}]]*Derivative[{0, 2}][h][{x1, x2}]) + Dt[x1]*Dt[x2]* (2*Derivative[2][F][h[{x1, x2}]]*Derivative[{0, 1}][h][{x1, x2}]*Derivative[{1, 0}][h][{x1, x2}] + 2*Derivative[1][F][h[{x1, x2}]]*Derivative[{1, 1}][h][{x1, x2}]) + Dt[x1]^2* (Derivative[2][F][h[{x1, x2}]]*Derivative[{1, 0}][h][{x1, x2}]^2 + Derivative[1][F][h[{x1, x2}]]*Derivative[{2, 0}][h][{x1, x2}]) Here we have an UFO with a "List" argument instead of a sequence Derivative[{1, 0}] which of course somehow entered by formal application of chain rule algebraically and the expression D[f[{x1,x2}],x1] -> f'[{x1,x2}]*{1,0} results from the fundamental stopper for Derivative at Sequence level D[ f[Sequence[x1,x2]], x1] -> Derivative[ Derivative[#]][f][#]&[ Sequence[x1,x2] ] For short: D looks for occurrences of names or expressions in sums of products and returns the sums as sum over every occurence, each summand "no expression found" set to zero, "expression once found" set to 1 once at each position in products (Leibniz rule). Dt applies the formal differention rules of D for functions of many variables with respect to positions in "Sequences" of arguments to the universe of formal expressions. If the innermost arguments of a function symbol are not Sequences throughout but List's or similar specialized heads, somewhere, the interpretation of the results of Dt and D remains up to you. A too difficult task probably. -- Roland Franzius