QUADRATURE_TEST is a MATLAB program which reads three files that define a quadrature rule, applies the quadrature rule to a set of test integrals, and reports the results.

The quadrature rule is defined by three text files:

1. the "X" file lists the abscissas (N rows, M columns);
2. the "W" file lists the weights (N rows);
3. the "R" file lists the integration region corners (2 rows, M columns);

The test integrals come from the TEST_NINT library.

The list of integrand functions includes:

1. f(x) = ( sum ( x(1:m) ) )**2;
2. f(x) = ( sum ( 2 * x(1:m) - 1 ) )**4;
3. f(x) = ( sum ( x(1:m) ) )**5;
4. f(x) = ( sum ( 2 * x(1:m) - 1 ) )**6;
5. f(x) = 1 / ( 1 + sum ( 2 * x(1:m) ) );
6. f(x) = product ( 2 * abs ( 2 * x(1:m) - 1 ) );
7. f(x) = product ( pi / 2 ) * sin ( pi * x(1:m) );
8. f(x) = ( sin ( (pi/4) * sum ( x(1:m) ) ) )**2;
9. f(x) = exp ( sum ( c(1:m) * x(1:m) ) );
10. f(x) = sum ( abs ( x(1:m) - 0.5 ) );
11. f(x) = exp ( sum ( abs ( 2 * x(1:m) - 1 ) ) );
12. f(x) = product ( 1 <= i <= m ) ( i * cos ( i * x(i) ) );
13. f(x) = product ( 1 <= i <= m ) t(n(i))(x(i)), t(n(i)) is a Chebyshev polynomial;
14. f(x) = sum ( 1 <= i <= m ) (-1)**i * product ( 1 <= j <= i ) x(j);
15. f(x) = product ( 1 <= i <= order ) x(mod(i-1,m)+1);
16. f(x) = sum ( abs ( x(1:m) - x0(1:m) ) );
17. f(x) = sum ( ( x(1:m) - x0(1:m) )**2 );
18. f(x) = 1 inside an m-dimensional sphere around x0(1:m), 0 outside;
19. f(x) = product ( sqrt ( abs ( x(1:m) - x0(1:m) ) ) );
20. f(x) = ( sum ( x(1:m) ) )**power;
21. f(x) = c * product ( x(1:m)^e(1:m) ) on the surface of an m-dimensional unit sphere;
22. f(x) = c * product ( x(1:m)^e(1:m) ) in an m-dimensional ball;
23. f(x) = c * product ( x(1:m)^e(1:m) ) in the unit m-dimensional simplex;
24. f(x) = product ( abs ( 4 * x(1:m) - 2 ) + c(1:m) ) / ( 1 + c(1:m) ) );
25. f(x) = exp ( c * product ( x(1:m) ) );
26. f(x) = product ( c(1:m) * exp ( - c(1:m) * x(1:m) ) );
27. f(x) = cos ( 2 * pi * r + sum ( c(1:m) * x(1:m) ) ),
Genz "Oscillatory";
28. f(x) = 1 / product ( c(1:m)**2 + (x(1:m) - x0(1:m))**2),
Genz "Product Peak";
29. f(x) = 1 / ( 1 + sum ( c(1:m) * x(1:m) ) )**(m+r),
Genz "Corner Peak";
30. f(x) = exp(-sum(c(1:m)**2 * ( x(1:m) - x0(1:m))**2 ) ),
Genz "Gaussian";
31. f(x) = exp ( - sum ( c(1:m) * abs ( x(1:m) - x0(1:m) ) ) ), Genz "Continuous";
32. f(x) = exp(sum(c(1:m)*x(1:m)) for x(1:m) <= x0(1:m), 0 otherwise,
Genz "Discontinuous";

### Usage:

where
prefix
the common prefix for the files containing the abscissa (X), weight (W) and region (R) information of the quadrature rule;

If the arguments are not supplied on the command line, the program will prompt for them.

### Languages:

QUADRATURE_TEST is available in a C++ version and a FORTRAN90 version and a MATLAB version.

### Related Data and Programs:

INTEGRAL_TEST, a FORTRAN90 program which uses test integrals to evaluate sets of quadrature points.

NINT_EXACTNESS, a MATLAB program which demonstrates how to measure the polynomial exactness of a multidimensional quadrature rule.

QUADRATURE_RULES, a dataset directory which contains a description and examples of quadrature rules defined by a set of "X", "W" and "R" files.

QUADRATURE_TEST_2D, a MATLAB program which reads files defining a 2D quadrature rule, and applies them to all the test integrals defined by TEST_INT_2D.

STROUD, a MATLAB library which contains quadrature rules for a variety of unusual areas, surfaces and volumes in 2D, 3D and N-dimensions.

TEST_NINT, a MATLAB library which defines a set of integrand functions to be used for testing multidimensional quadrature rules and routines.

TESTPACK, a MATLAB library which defines a set of integrands used to test multidimensional quadrature.

### Reference:

1. JD Beasley, SG Springer,
Algorithm AS 111: The Percentage Points of the Normal Distribution,
Applied Statistics,
Volume 26, 1977, pages 118-121.
2. Paul Bratley, Bennett Fox, Harald Niederreiter,
Implementation and Tests of Low-Discrepancy Sequences,
ACM Transactions on Modeling and Computer Simulation,
Volume 2, Number 3, July 1992, pages 195-213.
3. Roger Broucke,
Algorithm 446: Ten Subroutines for the Manipulation of Chebyshev Series,
Communications of the ACM,
Volume 16, 1973, pages 254-256.
4. William Cody, Kenneth Hillstrom,
Chebyshev Approximations for the Natural Logarithm of the Gamma Function, Mathematics of Computation,
Volume 21, Number 98, April 1967, pages 198-203.
5. Richard Crandall,
Projects in Scientific Computing,
Springer, 2005,
ISBN: 0387950095,
LC: Q183.9.C733.
6. Philip Davis, Philip Rabinowitz,
Methods of Numerical Integration,
Second Edition,
Dover, 2007,
ISBN: 0486453391,
LC: QA299.3.D28.
7. Gerald Folland,
How to Integrate a Polynomial Over a Sphere,
American Mathematical Monthly,
Volume 108, Number 5, May 2001, pages 446-448.
8. Leslie Fox, Ian Parker,
Chebyshev Polynomials in Numerical Analysis,
Oxford Press, 1968,
LC: QA297.F65.
9. Alan Genz,
Testing Multidimensional Integration Routines,
in Tools, Methods, and Languages for Scientific and Engineering Computation,
edited by B Ford, JC Rault, F Thomasset,
North-Holland, 1984, pages 81-94,
ISBN: 0444875700,
LC: Q183.9.I53.
10. Alan Genz,
A Package for Testing Multiple Integration Subroutines,
in Numerical Integration: Recent Developments, Software and Applications,
edited by Patrick Keast, Graeme Fairweather,
Reidel, 1987, pages 337-340,
ISBN: 9027725144,
LC: QA299.3.N38.
11. Kenneth Hanson,
Quasi-Monte Carlo: halftoning in high dimensions?
in Computatinal Imaging,
Edited by CA Bouman, RL Stevenson,
Proceedings SPIE,
Volume 5016, 2003, pages 161-172.
12. John Hart, Ward Cheney, Charles Lawson, Hans Maehly, Charles Mesztenyi, John Rice, Henry Thatcher, Christoph Witzgall,
Computer Approximations,
Wiley, 1968,
LC: QA297.C64.
13. Stephen Joe, Frances Kuo
Remark on Algorithm 659: Implementing Sobol's Quasirandom Sequence Generator,
ACM Transactions on Mathematical Software,
Volume 29, Number 1, March 2003, pages 49-57.
14. David Kahaner, Cleve Moler, Steven Nash,
Numerical Methods and Software,
Prentice Hall, 1989,
ISBN: 0-13-627258-4,
LC: TA345.K34.
Computers in Physics,
Volume 10, Number 2, March/April, 1996, pages 119-122.
16. Arnold Krommer, Christoph Ueberhuber,
Numerical Integration on Advanced Compuer Systems,
Springer, 1994,
ISBN: 3540584102,
LC: QA299.3.K76.
17. Anargyros Papageorgiou, Joseph Traub,
Faster Evaluation of Multidimensional Integrals,
Computers in Physics,
Volume 11, Number 6, November/December 1997, pages 574-578.
18. Thomas Patterson,
On the Construction of a Practical Ermakov-Zolotukhin Multiple Integrator,
in Numerical Integration: Recent Developments, Software and Applications,
edited by Patrick Keast and Graeme Fairweather,
D. Reidel, 1987, pages 269-290.
19. Arthur Stroud,
Approximate Calculation of Multiple Integrals,
Prentice Hall, 1971,
ISBN: 0130438936,
LC: QA311.S85.
20. Arthur Stroud, Don Secrest,
Prentice Hall, 1966,
LC: QA299.4G3S7.
21. Xiaoqun Wang, Kai-Tai Fang,
The Effective Dimension and quasi-Monte Carlo Integration,
Journal of Complexity,
Volume 19, pages 101-124, 2003.

### Source Code:

• quadrature_test.m, the main program, which gets the user's input, reads the quadrature rule from the files, and applies it to the test integrand functions.

### Examples and Tests:

CC_D2_LEVEL4 is a Clenshaw-Curtis sparse grid quadrature rule in dimension 2 of level 4, 65 points.

CC_D2_LEVEL5 is a Clenshaw-Curtis sparse grid quadrature rule in dimension 2 of level 5, 145 points.

CC_D6_LEVEL0 is a Clenshaw-Curtis sparse grid quadrature rule in dimension 6 of level 0, 1 point.

CC_D6_LEVEL1 is a Clenshaw-Curtis sparse grid quadrature rule in dimension 6 of level 1, 13 points.

CC_D6_LEVEL2 is a Clenshaw-Curtis sparse grid quadrature rule in dimension 6 of level 2, 85 points.

CC_D6_LEVEL3 is a Clenshaw-Curtis sparse grid quadrature rule in dimension 6 of level 3, 389 points.

CC_D6_LEVEL4 is a Clenshaw-Curtis sparse grid quadrature rule in dimension 6 of level 4, 1457 points.

CC_D6_LEVEL5 is a Clenshaw-Curtis sparse grid quadrature rule in dimension 6 of level 5, 4865 points.

You can go up one level to the MATLAB source codes.

Last revised on 11 November 2009.