Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

derivatives of indexed variables

76 views
Skip to first unread message

George Jefferson

unread,
Nov 30, 1995, 3:00:00 AM11/30/95
to
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?


Scott Herod

unread,
Dec 1, 1995, 3:00:00 AM12/1/95
to
(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
she...@newton.colorado.edu

0 new messages