gradient {calculus}  R Documentation 
Computes the numerical gradient of functions
or the symbolic gradient of characters
in arbitrary orthogonal coordinate systems.
gradient(
f,
var,
params = list(),
coordinates = "cartesian",
accuracy = 4,
stepsize = NULL,
drop = TRUE
)
f %gradient% var
f 
array of 
var 
vector giving the variable names with respect to which the derivatives are to be computed and/or the point where the derivatives are to be evaluated. See 
params 

coordinates 
coordinate system to use. One of: 
accuracy 
degree of accuracy for numerical derivatives. 
stepsize 
finite differences stepsize for numerical derivatives. It is based on the precision of the machine by default. 
drop 
if 
The gradient of a scalarvalued function F
is the vector
(\nabla F)_i
whose components are the partial derivatives of F
with respect to each variable i
.
The gradient
is computed in arbitrary orthogonal coordinate systems using the
scale factors h_i
:
(\nabla F)_i = \frac{1}{h_i}\partial_iF
When the function F
is a tensorvalued function F_{d_1,\dots,d_n}
,
the gradient
is computed for each scalar component. In particular, it becomes
the Jacobian matrix for vectorvalued function.
(\nabla F_{d_1,\dots,d_n})_i = \frac{1}{h_i}\partial_iF_{d_1,\dots,d_n}
Gradient vector for scalarvalued functions when drop=TRUE
, array
otherwise.
f %gradient% var
: binary operator with default parameters.
Guidotti E (2022). "calculus: HighDimensional Numerical and Symbolic Calculus in R." Journal of Statistical Software, 104(5), 137. doi:10.18637/jss.v104.i05
Other differential operators:
curl()
,
derivative()
,
divergence()
,
hessian()
,
jacobian()
,
laplacian()
### symbolic gradient
gradient("x*y*z", var = c("x", "y", "z"))
### numerical gradient in (x=1, y=2, z=3)
f < function(x, y, z) x*y*z
gradient(f = f, var = c(x=1, y=2, z=3))
### vectorized interface
f < function(x) x[1]*x[2]*x[3]
gradient(f = f, var = c(1, 2, 3))
### symbolic vectorvalued functions
f < c("y*sin(x)", "x*cos(y)")
gradient(f = f, var = c("x","y"))
### numerical vectorvalued functions
f < function(x) c(sum(x), prod(x))
gradient(f = f, var = c(0,0,0))
### binary operator
"x*y^2" %gradient% c(x=1, y=3)