test_triangle_integrals
test_triangle_integrals,
a MATLAB code which
defines a number of tests involving the integration of an integrand
function over some specific triangle, not necessarily the unit triangle.
It is possible to invoke a particular function by number, or to
try out all available functions,
as demonstrated in the sample calling program.
For convenience, all the integrand functions have been
scaled by a constant, so that the integral of the function
over the specific domain is exactly 1.
The test functions include F(X,Y)=
-
1 on the unit triangle.
-
x on the unit triangle.
-
y on the unit triangle.
-
x2 on the unit triangle.
-
x*y on the unit triangle.
-
y2 on the unit triangle.
-
x3 on the unit triangle.
-
x4 on the unit triangle.
-
x5 on the unit triangle.
-
x^(-0.2) remapped to (1,0), (5,0), (5,1).
-
(x+y)^(-0.2) on the unit triangle.
-
(1-x-y)^(-0.2) remapped to (-1,-3), (3,-2), (-1,2).
-
(x*y)^(-0.2) remapped to (0,0), (-7,0), (0,-3).
-
1/sqrt(x) + 1/sqrt(y) + 1/sqrt(x+y) on the unit triangle.
-
1/sqrt(1-x-y) on the unit triangle.
-
log(x*y) on the unit triangle.
-
1/sqrt(|x-1/4|) + 1/sqrt(|y-1/2|) on the unit triangle.
-
log ( x + y ) on the unit triangle.
-
sin ( x ) cos ( 5 y ) on the unit triangle.
-
sin ( 11 x ) cos ( y ) on the unit triangle.
-
1 / r on the unit triangle,
r = sqrt ( x^2+y^2).
-
log ( r ) / r on the unit triangle,
r = sqrt ( x^2+y^2).
The library includes a routines to define the integrand function,
the triangle over which the integral is to be carried out,
and a title for the problem.
Thus, for each integrand function, four routines are supplied. For
instance, for function #4, we have the routines:
-
P04_FUN evaluates the integrand for problem 4.
-
P04_TITLE returns the title for problem 4.
-
P04_VERTICES returns the integration triangle for problem 4
So once you have the calling sequences for these routines, you
can easily evaluate the function, or integrate it between the
appropriate limits, or compare your estimate of the integral
to the exact value.
Moreover, since the same interface is used for each function,
if you wish to work with problem 16 instead, you simply change
the "04" to "07" in your routine calls.
If you wish to call all of the functions, then you
simply use the generic interface, which again has four
routines, but which requires you to specify the problem
number as an extra input argument:
-
P00_FUN evaluates the integrand for problem PROB.
-
P00_SINGULARITY warns if the integran for problem PROB
has vertex, edge or interior singularities that might cause
problems for some integration schemes.
-
P00_TITLE returns the title for problem PROB.
-
P00_VERTICES returns the integration triangle for problem PROB.
Finally, some demonstration routines are built in for
simple quadrature methods. These routines include
-
P00_WANDZURA05_SUB applies an order-5 accurate Wandzura
rule, plus subdivision of the triangle.
-
P00_MONTE_CARLO uses Monte Carlo sampling.
-
P00_VERTEX_SUB averages values at vertices, and uses
subdivision.
and can be used with any of the sample integrands.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the MIT license
Languages:
test_triangle_integrals is available in
a C version and
a C++ version and
a FORTRAN90 version and
a MATLAB version.
Related Data and Programs:
stroud,
a MATLAB code which
includes some quadrature rules for triangles.
test_triangle_integrals_test
triangle_dunavant_rule,
a MATLAB code which
defines Dunavant rules for quadrature
on a triangle.
triangle_fekete_rule,
a MATLAB code which
defines a Fekete rule for quadrature or interpolation over a triangle.
triangle_monte_carlo,
a MATLAB code which
uses the Monte Carlo method to estimate integrals over a triangle.
triangle_ncc_rule,
a MATLAB code which
defines Newton-Cotes closed quadrature
rules on a triangle.
triangle_nco_rule,
a MATLAB code which
defines Newton-Cotes open quadrature
rules on a triangle.
triangle_wandzura_rule,
a MATLAB code which
defines Wandzura rules for quadrature on a triangle.
Reference:
-
Elise deDoncker, Ian Robinson,
An Algorithm for Automatic Integration Over a Triangle
Using Nonlinear Extrapolation,
ACM Transactions on Mathematical Software,
Volume 10, Number 1, March 1984, pages 1-16.
-
Elise deDoncker, Ian Robinson,
Algorithm 612:
Integration over a Triangle Using Nonlinear Extrapolation,
ACM Transactions on Mathematical Software,
Volume 10, Number 1, March 1984, pages 17-22.
-
Stephen Wandzura, Hong Xiao,
Symmetric Quadrature Rules on a Triangle,
Computers and Mathematics with Applications,
Volume 45, pages 1829-1840, 2003.
Source Code:
Last revised on 31 March 2019.