R: Gaussian Triangle Quadrature

triquad {pracma} | R Documentation

## Gaussian Triangle Quadrature

### Description

Numerically integrates a function over an arbitrary triangular domain by computing the Gauss nodes and weights.

### Usage

    triquad(f, x, y, n = 10, tol = 1e-10, ...)

### Arguments

`f` | the integrand as function of two variables.
`x` | x-coordinates of the three vertices of the triangle.
`y` | y-coordinates of the three vertices of the triangle.
`n` | number of nodes.
`tol` | relative tolerance to be achieved.
`...` | additional parameters to be passed to the function.

### Details

Computes the `N^2` nodes and weights for a triangle with vertices given by 3x2 vector. The nodes are produced by collapsing the square to a triangle.

Then `f` will be applied to the nodes and the result multiplied left and right with the weights (i.e., Gaussian quadrature).

By default, the function applies Gaussian quadrature with number of nodes `n=10,21,43,87,175` until the relative error is smaller than the tolerance.

### Value

The integral as a scalar.

### Note

A small relative tolerance is not really indicating a small absolute tolerance.

### Author(s)

Copyright (c) 2005 Greg von Winckel Matlab code based on the publication mentioned and available from MatlabCentral (calculates nodes and weights). Translated to R (with permission) by Hans W Borchers.

### References

Lyness, J. N., and R. Cools (1994). A Survey of Numerical Cubature over Triangles. Proceedings of the AMS Conference “Mathematics of Computation 1943–1993”, Vancouver, CA.

### See Also

`quad2d`, `simpson2d`

### Examples

    x <- c(-1, 1, 0); y <- c(0, 0, 1)
    f1 <- function(x, y) x^2 + y^2
    (I <- triquad(f1, x, y))                        # 0.3333333333333333

    # split the unit square
    x1 <- c(0, 1, 1); y1 <- c(0, 0, 1)
    x2 <- c(0, 1, 0); y2 <- c(0, 1, 1)
    f2 <- function(x, y) exp(x + y)
    I <- triquad(f2, x1, y1) + triquad(f2, x2, y2)  # 2.952492442012557
    quad2d(f2, 0, 1, 0, 1)                          # 2.952492442012561
    simpson2d(f2, 0, 1, 0, 1)                       # 2.952492442134769
    dblquad(f2,  0, 1, 0, 1)                        # 2.95249244201256

[Package pracma version 2.0.4 Index]