laplacian {calculus}  R Documentation 
Computes the numerical Laplacian of functions
or the symbolic Laplacian of characters
in arbitrary orthogonal coordinate systems.
laplacian(
f,
var,
params = list(),
coordinates = "cartesian",
accuracy = 4,
stepsize = NULL,
drop = TRUE
)
f %laplacian% 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 Laplacian is a differential operator given by the divergence of the
gradient of a scalarvalued function F
, resulting in a scalar value giving
the flux density of the gradient flow of a function.
The laplacian
is computed in arbitrary orthogonal coordinate systems using
the scale factors h_i
:
\nabla^2F = \frac{1}{J}\sum_i\partial_i\Biggl(\frac{J}{h_i^2}\partial_iF\Biggl)
where J=\prod_ih_i
. When the function F
is a tensorvalued function
F_{d_1\dots d_n}
, the laplacian
is computed for each scalar component:
(\nabla^2F)_{d_1\dots d_n} = \frac{1}{J}\sum_i\partial_i\Biggl(\frac{J}{h_i^2}\partial_iF_{d_1\dots d_n}\Biggl)
Scalar for scalarvalued functions when drop=TRUE
, array
otherwise.
f %laplacian% 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()
,
gradient()
,
hessian()
,
jacobian()
### symbolic Laplacian
laplacian("x^3+y^3+z^3", var = c("x","y","z"))
### numerical Laplacian in (x=1, y=1, z=1)
f < function(x, y, z) x^3+y^3+z^3
laplacian(f = f, var = c(x=1, y=1, z=1))
### vectorized interface
f < function(x) sum(x^3)
laplacian(f = f, var = c(1, 1, 1))
### symbolic vectorvalued functions
f < array(c("x^2","x*y","x*y","y^2"), dim = c(2,2))
laplacian(f = f, var = c("x","y"))
### numerical vectorvalued functions
f < function(x, y) array(c(x^2,x*y,x*y,y^2), dim = c(2,2))
laplacian(f = f, var = c(x=0,y=0))
### binary operator
"x^3+y^3+z^3" %laplacian% c("x","y","z")