MathGroup Archive 2008

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

Search the Archive

Re: Incoherent value for partial derivative

  • To: mathgroup at smc.vnet.net
  • Subject: [mg91075] Re: Incoherent value for partial derivative
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Tue, 5 Aug 2008 04:03:44 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, UK
  • References: <g76auv$dks$1@smc.vnet.net>

Miguel wrote:

> Let
> 
> In[1]: g[x_]:=3x^2+5x;
> FullForm[g'[x]]
> 
> Out[1]: Plus[5,Times[6,x]]
> 
> In[2]: g'[2]
> Out[2]: 17
> 
> Mathematica works fine and the result is correct. First, it executes
> the derivation and then the delayed substitution/assignation. 

This is true only for the *special* form g'[2]. If you use D[g[2],x], 
you get similar result and behavior as for D[f[1,2],x].

The operator D always evaluates its arguments in the same and consistent 
way, regardless of the name and number of variables.

However, the ' (prime) form is a special form that does *not* evaluate 
its argument as the operator D does. (And prime works only for a 
function of one variable.)

In other words, the ' (prime) form and the operator D form are *not* 
equivalent and they are not interchangeable without care.

   In[1]:= g[x_] := 3 x^2 + 5 x;
           g'[2] // Trace
           D[g[2], x] // Trace

   Out[2]=
                       2                    2
     {{g', {g[#1], 3 #1  + 5 #1, 5 #1 + 3 #1 }, 5 + 6 #1 & },

       (5 + 6 #1 & )[2], 5 + 6 2, {6 2, 12}, 5 + 12, 17}

   Out[3]=
                2           2
     {{g[2], 3 2  + 5 2, {{2 , 4}, 3 4, 12}, {5 2, 10}, 12 + 10, 22},

       D[22, x], 0}

As we can see above, the ' (prime) form first the function into an pure 
function and takes its first derivative, then applies the resulting pure 
function to the numeric value (2) passed as argument of the original 
function.

On the other hand, the operator D first evaluates its argument, which 
yields a numeric value, i.e. a constant, and since the derivative of a 
constant with respect to whatever variable is zero, the result is zero.

> But for
> partial derivative Mathematica works different way (not correspondig
> to FullForm

FullForm is irrelevant here: what matters is when the arguments are 
evaluated and how they are transformed before before applying numeric 
value. Trace is more appropriate to visualize what is going on. You can 
see the the reasoning (and behavior) is similar to what we did above.

   In[4]:= f[x_, y_] := x^2 + x y^2;
           FullForm[D [f[x, y], x]]
           D[f[1, 2], x] // Trace

   Out[5]//FullForm= Plus[Times[2, x], Power[y, 2]]

   Out[6]=
                 2      2    2         2
     {{f[1, 2], 1  + 1 2 , {1 , 1}, {{2 , 4}, 1 4, 4}, 1 + 4, 5},
       D[5, x], 0}

> In[3]: f[x_,y_]:=x^2+x y^2;
> FullForm[\!\(
> \*SubscriptBox[\(\[PartialD]\), \(x\)]\ \(f[x, y]\)\)]
> 
> Out[3]: Plus[Times[2,x],Power[y,2]]
> 
> In[4]: \!\(
> \*SubscriptBox[\(\[PartialD]\), \(x\)]\ \(f[1, 2]\)\)
> Out[4]: 0
> 
> I dont understand the reason.

Hope this helps,
-- Jean-Marc


  • Prev by Date: Re: Workaround for an unexpected behavior of Sum
  • Next by Date: RE: Denoting a Cartesian Product
  • Previous by thread: Re: Incoherent value for partial derivative
  • Next by thread: Re: Incoherent value for partial derivative