
Last chance! 50% off unlimited learning
Sale ends in
The R package polyCub implements cubature (numerical integration) over polygonal domains. It solves the problem of integrating a continuously differentiable function f(x,y) over simple closed polygons.
For the special case of a rectangular domain along the axes, the
cubature
package is more appropriate (cf.
CRAN Task View: Numerical Mathematics
).
You can install polyCub from CRAN via:
install.packages("polyCub")
To install the development version from the GitHub repository, use:
## install.packages("remotes")
remotes::install_github("bastistician/polyCub")
The basic usage is:
library("polyCub")
polyCub(polyregion, f)
polyregion
represents the integration domain as an object of class"owin"
(from spatstat.geom), "gpc.poly"
(from gpclib),
"SpatialPolygons"
(from sp), or "(MULTI)POLYGON"
(from sf),
or even as a plain list of lists of vertex coordinates ("xylist"
).
f
is the integrand and needs to take a two-column coordinate matrixas its first argument.
The polyCub()
function wraps the implemented cubature methods and
by default calls polyCub.SV()
, a C-implementation of product Gauss cubature.
Directly calling the desired cubature function is preferable,
see the list below.
polyCub.SV()
:
General-purpose product Gauss cubature
(Sommariva and Vianello, 2007, BIT Numerical Mathematics,
https://doi.org/10.1007/s10543-007-0131-2)
polyCub.midpoint()
:
Simple two-dimensional midpoint rule based on
spatstat.geom::as.im.function()
polyCub.iso()
:
Adaptive cubature for radially symmetric functions
via line integrate()
along the polygon boundary
(Meyer and Held, 2014, The Annals of Applied Statistics,
https://doi.org/10.1214/14-AOAS743, Supplement B, Section 2.4)
For details and illustrations see the vignette("polyCub")
in the installed package or
on CRAN.
The polyCub package evolved from the need to integrate so-called spatial interaction functions (Gaussian or power-law kernels) over the observation region of a spatio-temporal point process. Such epidemic models are implemented in surveillance.
Contributions are welcome!
Please submit suggestions or report bugs at
https://github.com/bastistician/polyCub/issues
or via e-mail to maintainer("polyCub")
.
The polyCub package is free and open source software, licensed under the GPLv2.
install.packages('polyCub')
"sfg"
to "gpc.poly"
"SpatialPolygons"
to "owin"
"owin"
and "gpc.poly"