polygauss: Calculate 2D Nodes and Weights of the Product Gauss Cubature

polygaussR Documentation

Calculate 2D Nodes and Weights of the Product Gauss Cubature

Description

Calculate 2D Nodes and Weights of the Product Gauss Cubature

Usage

polygauss(xy, nw_MN, alpha = NULL, rotation = FALSE, engine = "C")

Arguments

xy

list with elements "x" and "y" containing the polygon vertices in anticlockwise order (otherwise the result of the cubature will have a negative sign) with first vertex not repeated at the end (like owin.object$bdry).

nw_MN

unnamed list of nodes and weights of one-dimensional Gauss quadrature rules of degrees N and M=N+1 (as returned by gauss.quad): list(s_M, w_M, s_N, w_N).

alpha

base-line of the (rotated) polygon at x = \alpha (see Sommariva and Vianello (2007) for an explication). If NULL (default), the midpoint of the x-range of each polygon is chosen if no rotation is performed, and otherwise the x-coordinate of the rotated point "P" (see rotation). If f has its maximum value at the origin (0,0), e.g., the bivariate Gaussian density with zero mean, alpha = 0 is a reasonable choice.

rotation

logical (default: FALSE) or a list of points "P" and "Q" describing the preferred direction. If TRUE, the polygon is rotated according to the vertices "P" and "Q", which are farthest apart (see Sommariva and Vianello, 2007). For convex polygons, this rotation guarantees that all nodes fall inside the polygon.

engine

character string specifying the implementation to use. Up to polyCub version 0.4-3, the two-dimensional nodes and weights were computed by R functions and these are still available by setting engine = "R". The new C-implementation is now the default (engine = "C") and requires approximately 30% less computation time.
The special setting engine = "C+reduce" will discard redundant nodes at (0,0) with zero weight resulting from edges on the base-line x = \alpha or orthogonal to it. This extra cleaning is only worth its cost for computationally intensive functions f over polygons which really have some edges on the baseline or parallel to the x-axis. Note that the old R implementation does not have such unset zero nodes and weights.

References

Sommariva, A. and Vianello, M. (2007): Product Gauss cubature over polygons based on Green's integration formula. BIT Numerical Mathematics, 47 (2), 441-453. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1007/s10543-007-0131-2")}


polyCub documentation built on Oct. 25, 2023, 5:07 p.m.