Re: Re: Derivative of Dot[]
- To: mathgroup at smc.vnet.net
- Subject: [mg91126] Re: [mg91085] Re: Derivative of Dot[]
- From: "Eitan Grinspun" <eitan at grinspun.com>
- Date: Thu, 7 Aug 2008 04:37:34 -0400 (EDT)
- References: <g791cq$9hc$1@smc.vnet.net> <200808060902.FAA22060@smc.vnet.net>
>> Consider the following function:
>>
>> F[x_] := Dot[x,x]
>>
>> Evaluating this function works as expected: F[{1,2}] evaluates to 5.
>>
>> I differentiate this function w.r.t. its sole argument, F' evaluates
>> to 1.#1+#1.1&
>>
>> This is reasonable, and as expected. I would think that, since the
>
> The above expression make sense only for one dimensional vectors, say on
> the real line; in other words, a vector space where the unit vector is
> {1} and any vector {x} has only one component x.
Why? Even of a vector {x}, the resulting derivative cannot be
evaluated successfully: (1.#1+#1.1&)[{x}] does not simplify (the 1.
remains).
> You may want to write you own differentiating function such as the
> following:
I have done so before; but the question is what is the intended use of
the built in derivative of Dot? I can't find one.
Eitan
>
> In[1]:=
> SetAttributes[myDiff, HoldFirst]
> myDiff[fun_[x_?VectorQ]] :=
> Module[{v = Array[a, Length[x]]},
> D[fun[v], {v}] /. Thread[v -> x]]
>
> f[x_?VectorQ] := Dot[x, x]
> myDiff[f[{1, 2}]]
> myDiff[f[{1, 2}]].{3, 4}
>
> g[y_] := 2 f[y]
> myDiff[g[{1, 2}]]
> myDiff[g[{1, 2}]].{3, 4}
>
> Out[4]= {2, 4}
>
> Out[5]= 22
>
> Out[7]= {4, 8}
>
> Out[8]= 44
>
> Regards,
> -- Jean-Marc
>
>
- References:
- Re: Derivative of Dot[]
- From: Jean-Marc Gulliet <jeanmarc.gulliet@gmail.com>
- Re: Derivative of Dot[]