Re: derivatives of indexed variables

• To: mathgroup at smc.vnet.net
• Subject: [mg2653] Re: derivatives of indexed variables
• From: sherod at boussinesq.Colorado.EDU (Scott Herod)
• Date: Thu, 30 Nov 1995 21:04:35 -0500
• Organization: University of Colorado at Boulder

```(Original article follows)

Mathematica does not know the difference between indexed functions
and functions of an integer.  Apparently when you try to compute the
derivative of something like a[1] you get

Dt[a[1],x] = Dt[1,x]*Derivative[1][a][1]

This is useful if you want to make constants without having to worry about
derivatives acting correctly.  Unfortunately it makes it hard to create
indexed functions.

One workaround that I have used is to move back and forth between two forms
of the function a[i].  I create a sequence of functions a1, a2, etc
and convert between them using;

Cat[dumx_,dumy_] := ToExpression[StringJoin[ToString[dumx],ToString[dumy]]];
subI = {a[i_] :> Cat[a,i]};

and

subII = Table[Cat[a,i] -> a[i], {i,numberofa}]

=================================
In[3]:= a[4] /. subI

Out[3]= a4

In[4]:= numberofa = 10

Out[4]= 10

In[6]:= a4 /. subII

Out[6]= a[4]
=================================

Of course this is pretty crude and requires that you know how many indexed
functions you are going to have.

A second method is to make "a" an array of Function objects.

For example:
===================================
In[9]:= Clear[a]

In[10]:= a = {Sin, Cos, (1 + #)^2 &};

In[11]:= a[[1]][t]

Out[11]= Sin[t]

In[12]:= a[[3]][x]

2
Out[12]= (1 + x)
==================================

Then you can differentiate elements of the vector "a"

=================================

In[14]:= Dt[a[[3]],x]

2
Out[14]= Dt[(1 + #1) , x] &

In[15]:= %[x^2]

2
Out[15]= 4 x (1 + x )
=================================

Scott Herod
Applied Mathematics
University of Colorado, Boulder

In article <49je70\$53i at dragonfly.wri.com>, george at mech.seas.upenn.edu ( George Jefferson ) writes:
|> What am I missing?
|>
|> total derivative of unspecified y:
|>
|> In[1]:= Dt[y,x]
|>
|> Out[1]= Dt[y, x]
|>
|> But if we take the derivaitve of an undefined indexed variable
|> it is assumed to be a constant..
|>
|> In[2]:= Dt[a[1],x]
|>
|> Out[2]= 0
|>
|> note however that the indexed symbol could easily represent a non-constant.
|>
|> In[3]:= a[1]=y; Dt[a[1],x]
|>
|> Out[3]= Dt[y, x]
|>
|>
|> clearly the trouble is that there is no distinction between an indexed
|> symbol and a function evaluated at a fixed point..
|> Is there a workaround?

```

• Prev by Date: Re: Question about thread
• Next by Date: Re: Scientific Web - Speedcomparison Mathematica 2