Re: Derivative via mathematica
- To: mathgroup@smc.vnet.net
- Subject: [mg10561] Re: Derivative via mathematica
- From: Allan Hayes <hay@haystack.demon.co.uk>
- Date: Tue, 20 Jan 1998 16:54:04 -0500
- References: <69ncl9$8d5@smc.vnet.net>
cai wrote:
>
> Hi,
>
> I just used mathematica for a couple of days. I am trying to compute
> the derivative under mathematica. Because the function is complicated,
> I like to break it down.
>
> f[t_] = (m/(1+Exp[1/t] +b)
>
> Here m and b are functions of t.
> If I directly use command D after insert m and b terms, a very
> complicated equaion is gerenated, which I do not want.
>
> What I want is if I define the values of m' and b', rewrite the f
>
> m' = p
> b' = q // well, I dont know how to define, this is the idea
>
> f[t_, m[t], b[t]] = (m/(1+Exp[1/t] +b)
>
> then use the command D[f[t,m[t],b[t]],t] hopeful get a equation which is
> the function of t, p and q. How to do that?
>
> A related question, I tried to use non-defined function In[19]:= m[t_]
> Out[19]= m[t_]
> In[20]:= D[m[t],t]
> Out[20]= m'[t]
> and expected D[f[t,m[t],b[t]],t] contains m'[t]. Is it possible?
>
> Basically, it is a chain derivative question, I just want it to stop
> earlier.
>
> Could somebody help?
> Thanks.
>
> ccai1@ohiou.edu
In[25]:=
Clear["`*"]
In[26]:=
$Line = 0;
Wan, here are some suggestions and comments. They do not address all of
your points but I hope that they may be of help - please mail me if you
need more help.
Mathematica, of course, uses the standard results
In[1]:=
D[a f[t]+ b g[t],t]
Out[1]=
a f'[t] + b g'[t]
In[2]:=
D[f[t] g[t],t]
Out[2]=
g[t] f'[t] + f[t] g'[t]
In[3]:=
D[1/ g[t],t]
Out[3]=
g'[t]
-(-----)
2
g[t]
In[4]:=
D[f[g[t]],t]
Out[4]=
f'[g[t]] g'[t]
And we can put in values for f and g , f' and g' retrospectively. This
will be demonstrated in the treatment of the example below
In[5]:=
f1[t_] = m/(1+Exp[1/t] +b)
Out[5]=
m
------------
1/t
1 + b + E
Mathematica assumes that m and b are independent of t.
In[6]:=
d1=D[f1[t],t]
Out[6]=
1/t
E m
------------------
1/t 2 2
(1 + b + E ) t
Which is not what you want.
We can avoid this by using
In[7]:=
f2[t_] = m[t]/(1+Exp[1/t] +b[t])
Out[7]=
m[t]
---------------
1/t
1 + E + b[t]
Now we get,
In[8]:=
d2=D[f2[t],t]
Out[8]=
1/t
E
m[t] (-(----) + b'[t])
2
t m'[t] -(----------------------) +
---------------
1/t 2 1/t
(1 + E + b[t]) 1 + E + b[t]
If we define the functions m and b
In[9]:=
m[t_] := Sin[t]; b[t_]:= Exp[k t]
we get
In[10]:=
d2
Out[10]=
1/t
k t E
(E k - ----) Sin[t]
2
Cos[t] t
--------------- - ----------------------
1/t k t 1/t k t 2 1 + E + E (1 + E + E
)
It is possible to define the derivatives of these functions but we
cannot consistently define a function ad its derivative independently
so we clear the
definitions above (there are also programming reasons for this)
In[11]:=
Clear[m,b]
In[12]:=
m'[t_] = Cos[t^2]; b'[t_]:= t Exp[k t];
These derivative definitiions are used
In[13]:=
d2
Out[13]=
1/t
E k t
(-(----) + E t) m[t]
2 2
Cos[t ] t
--------------- - -----------------------
1/t 1/t 2 1 + E + b[t] (1 + E +
b[t])
but Mathematica has left m[t]; it has not integrated m'[t] to find it.
Defining derivatives can be useful but perhaps not so much here.
Incidentally the derivatives are stored under Derivative, not m and b.
In[14]:=
??m
>From In[14]:=
Global`m
In[15]:=
??Derivative
>From In[15]:=
f' represents the derivative of a function f of one argument.
Derivative[n1, n2, ... ][f] is the general form,
representing a function obtained from f by differentiating
n1 times with respect to the first argument, n2 times with
respect to the second argument, and so on.
Derivative[1][m][t_] = Cos[t^2]
Derivative[1][b][t_] := t*Exp[k*t]
This, and the notation m'[t], b'[t], leads us to the important contrast
between functions and formulas:
g' is the first derivative of the function g; g'[t] is its value at t -
it is
the same as D[g[t],t], the derivative of the formula g[t] with respect
to the variable t.
The FullForm of g' is
In[16]:=
FullForm[g']
Out[16]//FullForm=
Derivative[1][g]
In[17]:=
g'[t]
Out[17]=
g'[t]
In[18]:=
D[g[t],t]
Out[18]=
g'[t]
Once you get into pure functions you may wish to use a different
apporoach which reduces the chance of interference between definitions.
But first, I need to clear the definitions of the derivatives.
In[19]:=
Clear[Derivative]
In[20]:=
f2[t]/.{ m -> Function[t, Sin[t]],
b -> Function[t, Exp[k t]]}
Out[20]=
Sin[t]
---------------
1/t k t
1 + E + E
In[21]:=
d2/.{ m ->Sin,
b -> Function[t, Exp[k t]]}
Out[21]=
1/t
k t E
(E k - ----) Sin[t]
2
Cos[t] t
--------------- - ----------------------
1/t k t 1/t k t 2 1 + E + E (1 + E + E
)
or, more briefly,
In[22]:=
d2/.{ m -> Sin,b -> (Exp[k #]&)}
Out[22]=
1/t
k t E
(E k - ----) Sin[t]
2
Cos[t] t
--------------- - ----------------------
1/t k t 1/t k t 2 1 + E + E (1 + E + E
)
A variant of your idea for f can be implemented by
In[23]:=
f[m_,b_]= f2[t]
Out[23]=
m[t]
---------------
1/t
1 + E + b[t]
In[24]:=
D[f[ Cos, Exp[k #]&],t]
Out[24]=
1/t
k t E
(E k - ----) Cos[t]
2
t Sin[t] -(----------------------) -
---------------
1/t k t 2 1/t k t
(1 + E + E ) 1 + E + E
You might like to look up the following in the Help Browser D
Derivative
Dt (total derivative)
Please notice that these functions also deal with several variables. --
--
Allan Hayes
Training and Consulting
Leicester, UK
hay@haystack.demon.co.uk
http://www.haystack.demon.co.uk
voice: +44 (0)116 271 4198
fax: +44 (0)116 271 8642