# Mathematica: Trouble with defining function from gradiant

Tags:
1. Nov 29, 2011

### Gaco

Hi everyone. I've been using basically a whole day on two trivial Mathematica issues, so I'm finally going online for help:

1. Is there any simple way to define the gradient as a new function as such? My try:

Clear["Global`*"]
f[u_] := x*y
x[u_] := Exp
y := Cos

Which gives: "General::ivar: E^u is not a valid variable. >>"

I can kind of see what the problem is, but I don't know how to fix it. It works fine if I define gradf as an expression instead of a function (without the [u_]:), but I'd like it as a function. Any simple solution?

2. See the attachment. On the final line, it doesn't evaluate the function r2[0] properly. I think the problem is how h is defined as h[u_]:= f[x,y], doesn't work apparently. Any suggestions?

Also I'd love any general suggestions on how to do things easier or simpler in the notebook attachement. I'm a total beginner in Mathematica (just came from Maple) so I probably do a some things not the easiest or simplest way. Any feedback would be good

Any help is appreciated.
Thanks

#### Attached Files:

• ###### Mat1P13a.nb
File size:
23.8 KB
Views:
73
2. Nov 30, 2011

### Staff: Mentor

You probably should just use the built in function Grad

3. Dec 3, 2011

### Gaco

Thank you for the suggestion.

The solution was given on the official wolfram forum and was to use the transformation rule, the /. operator and make the third line as this:

D[f, {{x, y}}]/.{x->Exp,y->Cos}

That way the fints the gradiant from the general expression, then substitutes in the function expressions for x and y and finally that result is set equal to gradf[u_] (because SetDelayed := is used).