Mathematica: Trouble with defining function from gradiant

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
2 replies · 3K views
Gaco
Messages
17
Reaction score
0
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
gradf[u_] := D[f, {{x, y}}]
gradf
x[u_] := Exp
y := Cos
gradf

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
 

Attachments

on Phys.org
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).