From: Ostap on
Hello,

First off, I'm a new user, so I apologize for any confusing or non-
standard lingo...

I have a question about user-defined functions. Suppose I define the
following function for the magnitude of the gradient:

mg[x_, y_] := Sqrt[x^2 + y^2]
mgg[f_] := mg[D[f, x], D[f, y]]

If I now use mgg in some lengthy sequence of differentiations, for
example in finding a variational derivative, my output may include the
magnitude of the gradient, but its expanded form: Sqrt[f^(0,1)
(x,y)^2+f^(1,0)(x,y)^2].

Is there a way to convert such an answer to a form which uses mgg[f],
i.e. have Mathematica "simplify" the output to account for user-
defined functions that were used in the first place?

Example:
Input:
mg[x_, y_] := Sqrt[x^2 + y^2]
mgg[f_] := mg[D[f, x], D[f, y]]
Factor[VariationalD[mgg[p[x, y]], p[x, y], {x, y}]]

What I get:
( p^(2,0)(x,y) p^(0,1)(x,y)^2 - 2 p^(1,0)(x,y) p^(1,1)(x,y) p^(0,1)
(x,y) + p^(0,2)(x,y) p^(1,0)(x,y)^2 ) / ( p^(0,1)(x,y)^2+p^(1,0)
(x,y)^2 )^(3/2)

What I want:
( p^(2,0)(x,y) p^(0,1)(x,y)^2 - 2 p^(1,0)(x,y) p^(1,1)(x,y) p^(0,1)
(x,y) + p^(0,2)(x,y) p^(1,0)(x,y)^2 ) / ( mgg(p(x,y)) )^3

Any help would be greatly appreciated.


-O