QUADMOM
Quadrature Rules from Weight Moments
QUADMOM
is a MATLAB library which
computes a Gaussian quadrature rule for a weight function rho(x)
based on the GolubWelsch procedure that only requires knowledge
of the moments of rho(x).
The standard GolubWelsch procedure expects to work with the
coefficients alpha() and beta() of the three term recursion
for the orthogonal polynomials associated with the weight function rho(x).
However, in the same paper, Golub and Welsch discuss a related procedure
which, to compute a Gaussian quadrature rule of order N, requires the
values of the first M=2*N+1 moments associated with rho(x):
mu(k) = integral x^k rho(x) dx, 0 <= k <= 2*n
This library demonstrates this momentbased procedure.
Executing the sample program requires access to the TOMS655 library
as well.
Licensing:
The computer code and data files made available on this web page
are distributed under
the GNU LGPL license.
Languages:
QUADMOM is available in
a C version and
a C++ version and
a FORTRAN77 version and
a FORTRAN90 version and
a MATLAB version.
Related Data and Programs:
QUADRATURE_GOLUB_WELSCH,
a MATLAB library which
computes the points and weights of a Gaussian quadrature rule using the
GolubWelsch procedure, assuming that the points have been specified.
QUADRATURE_LEAST_SQUARES,
a MATLAB library which
computes weights for "subinterpolatory" quadrature rules,
that is, it estimates integrals by integrating a polynomial that
approximates the function data in a least squares sense.
QUADRULE,
a MATLAB library which
contains information about quadrature rules, both as tabulated values,
and as computational procedures.
TOMS655,
a MATLAB library which
computes the weights for interpolatory quadrature rules;
this library is commonly called IQPACK,
by Sylvan Elhay and Jaroslav Kautsky.
Reference:

Sylvan Elhay, Jaroslav Kautsky,
Algorithm 655:
IQPACK,
FORTRAN Subroutines for the Weights of Interpolatory Quadrature,
ACM Transactions on Mathematical Software,
Volume 13, Number 4, December 1987, pages 399415.

Gene Golub, John Welsch,
Calculation of Gaussian Quadrature Rules,
Mathematics of Computation,
Volume 23, Number 106, April 1969, pages 221230.

Jaroslav Kautsky, Sylvan Elhay,
Calculation of the Weights of Interpolatory Quadratures,
Numerische Mathematik,
Volume 40, Number 3, October 1982, pages 407422.
Source Code:

moment_method.m
computes a quadrature rule by the method of moments.

moments_laguerre.m
first M moments of the Laguerre weight over [0,+oo);

moments_legendre.m
first M moments of the Legendre weight over [a,b];

moments_normal.m
first M moments of a general Gaussian weight with mean mu
and standard deviation sigma, over (oo,+oo);

moments_normal_01.m
first M moments of the standard Gaussian weight over (oo,+oo);

moments_truncated_normal_ab.m
first M moments of a general Gaussian weight with mean mu
and standard deviation sigma, truncated to [a,b];

moments_truncated_normal_a.m
first M moments of a general Gaussian weight with mean mu
and standard deviation sigma, truncated to [a,+oo);

moments_truncated_normal_b.m
first M moments of a general Gaussian weight with mean mu
and standard deviation sigma, truncated to (oo,b];

normal_01_cdf.m
evaluates the Normal 01 CDF.

normal_01_pdf.m
evaluates the Normal 01 PDF.

r8_choose.m
computes the binomial coefficient C(N,K).

r8_factorial.m
computes the factorial function.

r8_factorial2.m
computes the double factorial function.

r8_mop.m
returns the value of (1)*K.

r8mat_print.m
prints an R8MAT.

r8mat_print_some.m
prints some of an R8MAT.

r8vec_print.m
prints an R8VEC.

r8vec2_print.m
prints a pair of R8VEC's.

timestamp.m
prints the current YMDHMS date as a time stamp.

truncated_normal_ab_moment.m
returns moments of the Truncated Normal PDF.

truncated_normal_a_moment.m
returns moments of the lower Truncated Normal PDF.

truncated_normal_b_moment.m
returns moments of the upper Truncated Normal PDF.
Examples and Tests:

quadmom_test.m,
a sample calling program;

quadmom_test_output.txt,
the output file.

quadmom_test01.m,
demonstrates the procedure for the Legendre weight rho(x)=1
over the interval [1,+1].

quadmom_test02.m,
demonstrates the procedure for the standard Gaussian weight.

quadmom_test03.m,
demonstrates the procedure for a general Gaussian weight.

quadmom_test04.m,
demonstrates the procedure for the Laguerre weight.

quadmom_test05.m,
demonstrates the procedure for a truncated normal weight.

quadmom_test06.m,
demonstrates the procedure for a lower truncated normal weight.

quadmom_test07.m,
demonstrates the procedure for an upper truncated normal weight.

quadmom_test08.m,
integrates sine(x) against a lower truncated normal weight.
You can go up one level to
the MATLAB source codes.
Last revised on 05 October 2013.