[Date Index]
[Thread Index]
[Author Index]
Re: [Q] Up values
*To*: mathgroup at christensen.cybernetics.net
*Subject*: [mg691] Re: [Q] Up values
*From*: rknapp (Robert Knapp)
*Date*: 10 Apr 1995 13:49:54 GMT
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**
| |