Learn R Programming

polyCub

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).

Installation

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")

Usage

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 matrix

as 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.

Implemented cubature methods

  1. polyCub.SV(): General-purpose product Gauss cubature (Sommariva and Vianello, 2007, BIT Numerical Mathematics, https://doi.org/10.1007/s10543-007-0131-2)

  2. polyCub.midpoint(): Simple two-dimensional midpoint rule based on spatstat.geom::as.im.function()

  3. 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.

Applications

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.

Feedback

Contributions are welcome! Please submit suggestions or report bugs at https://github.com/bastistician/polyCub/issues or via e-mail to maintainer("polyCub").

License

The polyCub package is free and open source software, licensed under the GPLv2.

Copy Link

Version

Install

install.packages('polyCub')

Monthly Downloads

1,585

Version

0.9.2

License

GPL-2

Issues

Pull Requests

Stars

Forks

Maintainer

Sebastian Meyer

Last Published

February 11th, 2025

Functions in polyCub (0.9.2)

polyCub.exact.Gauss

Quasi-Exact Cubature of the Bivariate Normal Density (DEFUNCT)
polyCub-package

Cubature over Polygonal Domains
polyCub

Wrapper Function for the Various Cubature Methods
polyCub.iso

Cubature of Isotropic Functions over Polygonal Domains
xylist

Convert Various Polygon Classes to a Simple List of Vertices
polyCub.midpoint

Two-Dimensional Midpoint Rule
sfg2gpc

Convert polygonal "sfg" to "gpc.poly"
polygauss

Calculate 2D Nodes and Weights of the Product Gauss Cubature
checkintrfr

Check the Integral of \(r f_r(r)\)
circleCub.Gauss

Integration of the Isotropic Gaussian Density over Circular Domains
gpclibPermit

gpclib License Acceptance (OBSOLETE)
dotprod

Dot/Scalar Product of Two Vectors
isScalar

Checks if Argument is Scalar
isClosed

Check if Polygon is Closed
coerce-sp-methods

Coerce "SpatialPolygons" to "owin"
coerce-gpc-methods

Conversion between polygonal "owin" and "gpc.poly"
polyCub.SV

Product Gauss Cubature over Polygonal Domains
plot_polyregion

Plots a Polygonal Domain (of Various Classes)
plotpolyf

Plot Polygonal Domain on Image of Bivariate Function
vecnorm

Euclidean Vector Norm (Length)