Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Maple Mathematica: Trouble with defining function from gradiant

  1. Nov 29, 2011 #1
    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:

    f[u_] := x*y
    gradf[u_] := D[f, {{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.

    Attached Files:

  2. jcsd
  3. Nov 30, 2011 #2


    Staff: Mentor

    You probably should just use the built in function Grad
  4. Dec 3, 2011 #3
    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).
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook