MathGroup Archive 1995

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

Search the Archive

Re: [Q] Up values


In article <3m4q7g$e47 at news0.cybernetics.net> kessler at halley.sph.unc.edu (Marc Kessler) writes:

> 
> Why isn't the following code giving 
> 
>               (1,0)      2    
> Out[6]= 4 lami     [x, y]      
> 
> as a result?
> 
> $ math
> Mathematica 2.2 for VAX/VMS
> Copyright 1988-93 Wolfram Research, Inc.
>  -- Motif graphics initialized --
> 
> In[1]:= li = lami[x,y];
> 
> In[2]:= lami/: D[lami[x,y],{x,2}] = 0;
> 
> In[3]:= lami/: D[lami[x,y],{y,2}] = 0;
> 
> In[4]:= lami/: D[lami[x,y],x,y] = 0;
> 
> In[5]:= vert = 2li^2 - li;
> 
> In[6]:= D[vert,{x,2}]
> 
>               (1,0)      2       (2,0)                          (2,0)
> Out[6]= 4 lami     [x, y]  - lami     [x, y] + 4 lami[x, y] lami     [x, y]
> 
> I have the same problem when I use 
>    lami/: D[lami[x_,y_],{x_,2}] = 0;  ... 
> 
> Thanks for the help.

The reason this doesn't work is that the function D usually ends up using the operator Derivative.  Thus, for example, the definition of D[a[x],x] (either with upcode or downcode) does not necessarily affect the value of, say, D[(a[x])^2,x], because the latter is computed in the end using Derivative.

In[1]:= a /: D[a[x],x] = 0

Out[1]= 0

In[2]:= D[a[x],x]

Out[2]= 0

In[3]:=D[(a[x])^2,x]

Out[3]=2 a[x] a'[x]

The solution is to make your definitions with respect to Derivative:

In[4]:=li = lami[x,y];

In[5]:=lami/: Derivative[2,0][lami] = 0&;

In[6]:=lami/: Derivative[0,2][lami] = 0&;

In[7]:=lami/: Derivative[1,1][lami] = 0&;

In[8]:=vert = 2li^2 - li;

In[9]:=D[vert,{x,2}]

              (1,0)      2
Out[9]= 4 lami     [x, y]

Rob Knapp
WRI



  • Prev by Date: Re: Performance of student version of Mathematica?
  • Next by Date: Re: Performance of student version of Mathematica?
  • Previous by thread: [Q] Up values
  • Next by thread: Mathematica 2.2.3 and WinNT 3.5