| Derivate | R Documentation |
Derivate a discrete variable using finite differences
Derivate(
formula,
order = 1,
cyclical = FALSE,
fill = FALSE,
data = NULL,
sphere = FALSE,
a = 6371000,
equispaced = TRUE
)
Laplacian(
formula,
cyclical = FALSE,
fill = FALSE,
data = NULL,
sphere = FALSE,
a = 6371000,
equispaced = TRUE
)
Divergence(
formula,
cyclical = FALSE,
fill = FALSE,
data = NULL,
sphere = FALSE,
a = 6371000,
equispaced = TRUE
)
Vorticity(
formula,
cyclical = FALSE,
fill = FALSE,
data = NULL,
sphere = FALSE,
a = 6371000,
equispaced = TRUE
)
formula |
a formula indicating dependent and independent variables |
order |
order of the derivative |
cyclical |
logical vector of boundary condition for each independent variable |
fill |
logical indicating whether to fill values at the boundaries with forward and backwards differencing |
data |
optional data.frame containing the variables |
sphere |
logical indicating whether to use spherical coordinates (see details) |
a |
radius to use in spherical coordinates (defaults to Earth's radius) |
equispaced |
logical indicating whether points are equispaced or not. |
Each element of the return vector is an estimation of
\frac{\partial^n x}{\partial y^{n}} by
centred finite differences.
If sphere = TRUE, then the first two independent variables are
assumed to be longitude and latitude (in that order) in degrees. Then, a
correction is applied to the derivative so that they are in the same units as
a.
Using fill = TRUE will degrade the solution near the edges of a non-cyclical
boundary. Use with caution.
Laplacian(), Divergence() and Vorticity() are convenient wrappers that
call Derivate() and make the appropriate sums. For Divergence() and
Vorticity(), formula must be of the form vx + vy ~ x + y
(in that order).
If there is one independent variable and one dependent variable, a numeric vector of the same length as the dependent variable. If there are two or more independent variables or two or more dependent variables, a list containing the directional derivatives of each dependent variables.
Other meteorology functions:
EOF(),
GeostrophicWind(),
WaveFlux(),
thermodynamics,
waves
data.table::setDTthreads(2)
theta <- seq(0, 360, length.out = 20)*pi/180
theta <- theta[-1]
x <- cos(theta)
dx_analytical <- -sin(theta)
dx_finitediff <- Derivate(x ~ theta, cyclical = TRUE)[[1]]
plot(theta, dx_analytical, type = "l")
points(theta, dx_finitediff, col = "red")
# Curvature (Laplacian)
# Note the different boundary conditions for each dimension
variable <- expand.grid(lon = seq(0, 360, by = 3)[-1],
lat = seq(-90, 90, by = 3))
variable$z <- with(variable, cos(lat*pi/180*3) + sin(lon*pi/180*2))
variable <- cbind(
variable,
as.data.frame(Derivate(z ~ lon + lat, data = variable,
cyclical = c(TRUE, FALSE), order = 2)))
library(ggplot2)
ggplot(variable, aes(lon, lat)) +
geom_contour(aes(z = z)) +
geom_contour(aes(z = z.ddlon + z.ddlat), color = "red")
# The same as
ggplot(variable, aes(lon, lat)) +
geom_contour(aes(z = z)) +
geom_contour(aes(z = Laplacian(z ~ lon + lat, cyclical = c(TRUE, FALSE))),
color = "red")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.