[Date Index]
[Thread Index]
[Author Index]
Re: Working with D, definition of a function
*To*: mathgroup at smc.vnet.net
*Subject*: [mg75969] Re: Working with D, definition of a function
*From*: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
*Date*: Mon, 14 May 2007 03:39:54 -0400 (EDT)
*Organization*: The Open University, Milton Keynes, UK
*References*: <f26nfr$450$1@smc.vnet.net>
Thomas Schmelzer wrote:
> Hi,
>
> I have defined a map
>
> ComPath[w_, mu_, bias_] := mu*(\[ImaginaryI]*w + 1)^2 + bias;
> Now, I would like to use the derivative with respect to w as a further
> function.
>
> D[ComPath[w, mu, 0], w]
>
> gives the answer I expect, but
>
> ComPathPrime[w_, mu_] := D[ComPath[w, mu, 0], w];
>
> doesn't seem to make sense
>
> ComPathPrime[2, 1]
>
> results in
>
> General::ivar : 2 is not a valid variable.
>
>
>
> If it seems I have a lack of knowledge about the internals of Mathmatica -
> that's right.
>
> Can you briefly explain why this should not work?
>
> Best,
>
> Thomas
Note that w is the name of a pattern and the function is defined with a
SetDelayed. Therefore the pattern named w (and this is also true for mu
and bias) is going to be replaced on the RHS by the value provided on
the LHS *before* the actual evaluation (or code execution) takes place.
That is, when you call ComPathPrime[2, 1], the RHS is rewritten as
D[ComPath[2, 1, 0], 2], so you attempt to take the derivative w.r.t. to
2, operation that does not make sense.
The following may achieve what you are looking for.
In[1]:=
ComPath[w_, mu_, bias_] := mu*(I*w + 1)^2 + bias;
ComPathPrime[w_, mu_] = D[ComPath[w, mu, 0], w];
D[ComPath[w, mu, 0], w]
ComPathPrime[2, 1]
Out[3]=
2*I*mu*(1 + I*w)
Out[4]=
-4 + 2*I
Regards,
Jean-Marc
Prev by Date:
**Re: Working with D, definition of a function**
Next by Date:
**Re: Mathematica 6: How to add documentation for user packages?**
Previous by thread:
**Re: Working with D, definition of a function**
Next by thread:
**Re: Working with D, definition of a function**
| |