Mathematica Mathematica: Trouble with defining function from gradiant

AI Thread Summary
The discussion revolves around two Mathematica issues faced by a beginner transitioning from Maple. The first issue is defining the gradient of a function as a new function. The user attempts to define the gradient using the derivative function D but encounters an error related to variable validity. The solution provided suggests using the transformation rule with the /. operator to substitute the specific expressions for x and y after computing the gradient. This allows the gradient to be defined correctly as a function. The second issue involves a function not evaluating correctly at a specific point, attributed to the way another function h[u] is defined. The user seeks general advice on simplifying their Mathematica notebook usage. The community suggests leveraging built-in functions like Grad for efficiency and clarity in calculations. Overall, the discussion highlights common challenges for new users in Mathematica and emphasizes the utility of built-in functions and proper variable handling.
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

Physics news on Phys.org
You probably should just use the built in function Grad
 
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).
 

Similar threads

Replies
1
Views
2K
Replies
4
Views
3K
Replies
13
Views
2K
Replies
4
Views
1K
Replies
2
Views
3K
Replies
3
Views
4K
Back
Top