       Re: Error when working with a derivative

• To: mathgroup at smc.vnet.net
• Subject: [mg104954] Re: [mg104947] Error when working with a derivative
• From: Bob Hanlon <hanlonr at cox.net>
• Date: Sun, 15 Nov 2009 05:53:55 -0500 (EST)

```MuVaF[ex_, ey_] :=
ex^2 + ey^2 + ex*ey + ex + ey

Use Set ( = ) rather than SetDelayed ( := ) in the definition of DerivMuVaF

Clear[DerivMuVaF]

DerivMuVaF[ex_, ey_] =
D[MuVaF[ex, ey], ex];

DerivMuVaF[1, 2]

5

Alternatively, use a temporary variable in a construct such as

Clear[DerivMuVaF]

DerivMuVaF[ex_, ey_] :=
Module[{tex},
D[MuVaF[tex, ey], tex] /. tex -> ex]

Note : Module is used to make the variable tex local to avoid any possibility of a naming conflict

DerivMuVaF[1, 2]

5

Bob Hanlon

---- Vicent <vginer at gmail.com> wrote:

=============
Hello.

This is my first message to the list.

I work with Mathematica 7.0.0 on Windows.

I work with a multiple-variable function, say "MuVaF", and I want to
define a function which is the partial derivative with respect to one
of the variables. I tried with this:

MuVaF[ex_, ey_] := ex^2 + ey^2 + ex*ey + ex + ey

Then, if I try to derivate it with respect to "ex":

D[MuVaF[ex, ey], ex]

I get this:

1 + 2 ex + ey

Which sound OK to me. But if I try this:

DerivMuVaF[ex_, ey_] := D[MuVaF[ex, ey], ex]

And then this (trying to evaluate the function for a given point):

DerivMuVaF[1, 2]

I get an error message:

General::ivar: 1 is not a valid variable. >>

I think that's because Mathematica is understanding I am trying to
perform the derivative on "1"; it is expecting to get a variable and I
am giving a number instead. So, what's the right way to tell
Mathematica I want to work with the derivative function of a
previously defined function??

I guess the answer should be easy, but I haven't been able to find it
out by my own.  :-(