[Date Index]
[Thread Index]
[Author Index]
Re: D[...] change in 5.1
*To*: mathgroup at smc.vnet.net
*Subject*: [mg58710] Re: D[...] change in 5.1
*From*: Daniel Huber <dh at metrohm.ch>
*Date*: Fri, 15 Jul 2005 03:02:29 -0400 (EDT)
*References*: <db57qa$4ri$1@smc.vnet.net> <42D691EF.6020500@gmail.com> <200507141456.42362.akolzine@uiuc.edu>
*Sender*: owner-wri-mathgroup at wolfram.com
Hi Alexei,
You have a misunderstanding of pattern matching.
It is clear that the left hand side of a definition must match. This is
only the case if anything that is not marked as a pattern must match
literally. E.g. f[a] only matches f[a] and not f[b]. On the other hand
f[a_] matches f[b].
Now consider your construct:
D[n[i_], x[j_], NonConstants -> n]
Here only i and j are pattern. Ther rest must match literally. This is not the case with:
D[1 + n[k], x[l], NonConstants -> n]
Here "1+" does not match. To make it match you would need a pattern like:
D[a_:0 + n[i_], x[j_], NonConstants -> n]
This accounts for an additive term with a default value of 0.
Further, I do not see why you need the "NonConstants -> n".
sincerely, Daniel
Alexei Akolzin wrote:
>I am sorry, here what I meant:
>
>In[1] := n /: D[n[i_], x[j_], NonConstants -> n] := (1/r)*(d[i, j] -
>n[i]*n[j]);
>
>In[2] := D[n[k], x[l], NonConstants -> n]
>Out[2] = (d[k, l] - n[k] n[l]) / r
>
>In[3] := D[1 + n[k], x[l], NonConstants -> n]
>Out[3] = D[n, x[l], NonConstants -> n]
>
>In[4] := $Version
>Out[4] = "5.1 for Linux x86 (64 bit) (January 27, 2005)"
>
>From my point of view Out[3] should be exactly equal to Out[2]. It was
>in earlier versions, but it is not in 5.1! The difference gives all
>kind of problems in more complicated expressions. I try to combat this
>with Hold and ReleaseHold, but ran into a more peculiar problem, which
>is even more puzzling to me:
>
>In[1] := n /: D[ n[i_], x[j_], NonConstants -> {n, r} ] := ( \[Delta][i,
>j] - n[i] n[j]) / r;
>In[2] := r /: D[ r, x[i_], NonConstants -> {n,r} ] := n[i];
>
>In[3] := D[ \[Delta][i,j] BesselJ[0 , k r] , x[l], NonConstants ->
>{n,r} ]
>Out[3] = 0
>
>In[4] := D[ \[Delta][i,j] BesselJ[0 , k r] , x[m], NonConstants ->
>{n,r} ]
>Out[4] = - k BesselJ[1,k r] n[m] \[Delta][i,j]
>
>In[8] := ?k
>Global`k
>
>In[9]:= ? \[Delta]
>Global`\[Delta]
>
>Now, Out[3] and Out[4] should be the simmilar. The only difference is
>what simbol "m" or "l" is used in respective differentiation by x[m]
>or x[l]. But again they are not. The problem disappears if I substitute
>"\[Delta]", which I enter from keyboard as Esc d Esc, for example by
>"d".
>
>Sincerely,
>Alexei.
>
>
>
>
>On Thursday 14 July 2005 11:25, you wrote:
>
>
>>Alexei Akolzin wrote:
>>
>>
>>>Hi,
>>>
>>>In previous version two lines below seemed to work as intended:
>>>
>>>In:
>>>n /: D[n[i_], x[j_], NonConstants -> {n,r}] := (1/r)( d[i,j] - n[i]
>>>n[j] ); D[ 1 + n[k], x[l] ]
>>>
>>>Out: (-n[k] n[l] + d[k,l]) \ r
>>>
>>>But now in ver 5.1 I get something like:
>>>Out: D[n, x[l], NonConstants -> {J, r, n}] (1)
>>>
>>>The funny part is that D[ n[k], x[l] ] is recognized and
>>>substituted by the expression associated with definition of n.
>>>
>>>I wonder whether there is a possibility to get Mathematica 5.1
>>>recognize n[k] as an indexed symbol n.
>>>
>>>Thanks.
>>>Alexei Akolzin.
>>>
>>>
>>Hi Alexei,
>>
>>Have you posted the correct expression? I am asking because here what
>>I get with Mathematica 5.1.1:
>>
>>In[1]:=
>>n /: D[n[i_], x[j_], NonConstants -> {n, r}] :=
>> (1/r)*(d[i, j] - n[i]*n[j]);
>>
>>In[2]:=
>>D[1 + n[k], x[l]]
>>
>>Out[2]=
>>0
>>
>>In[3]:=
>>Information["n", LongForm -> False]
>>
>>n
>>
>>n /: D[n[i_], x[j_], NonConstants -> {n, r}] :=
>> (1/r)*(d[i, j] - n[i]*n[j])
>>
>>In[4]:=
>>$Version
>>
>>Out[4]=
>>"5.1 for Microsoft Windows (January 27, 2005)"
>>
>>Best regards,
>>/J.M.
>>
>>
>
>
>
>
--
Daniel Huber
Metrohm Ltd.
Oberdorfstr. 68
CH-9100 Herisau
Tel. +41 71 353 8585, Fax +41 71 353 8907
E-Mail:<mailto:dh at metrohm.ch>
Internet:<http://www.metrohm.ch>
Prev by Date:
**Re: Light and surface colors**
Next by Date:
**Re: How to display dates in plots**
Previous by thread:
** Re: D[...] change in 5.1**
Next by thread:
**Re: D[...] change in 5.1**
| |