lattice_rule


lattice_rule, a Fortran90 code which approximates integrals in multiple dimensions using lattice rules.

The lattice rules are defined on the unit square, or in higher dimensions, on the unit hypercube.

Lattice rules are more suitable to integrands that are periodic, with period 1, in all variables. However, there are techniques that may be used when the integrand does not satisfy this requirement.

The performance of a lattice rule depends heavily on the choice of the generator vectors. Once the spatial dimension and the number of points have been chosen, there are techniques for finding a good generator vector.

The simplest lattice rules are called "rank 1" rules, and use a lattice generated by multiples of a single generator vector. More elaborate rules can be generated by using more generator vectors, up to the maximum, which is the dimension of the space.

Licensing:

The information on this web page is distributed under the MIT license.

Languages:

lattice_rule is available in a C++ version and a Fortran90 version and a MATLAB version and an Octave version.

Related Programs:

lattice_rule_test

f90_rule, a Fortran90 code which computes a quadrature rule which estimates the integral of a function f(x), which might be defined over a one dimensional region (a line) or more complex shapes such as a circle, a triangle, a quadrilateral, a polygon, or a higher dimensional region, and which might include an associated weight function w(x).

Reference:

  1. Seymour Haber,
    Parameters for Integrating Periodic Functions of Several Variables,
    Mathematics of Computation,
    Volume 41, Number 163, July 1983, pages 115-129.
  2. Albert Nijenhuis, Herbert Wilf,
    Combinatorial Algorithms for Computers and Calculators,
    Second Edition,
    Academic Press, 1978,
    ISBN: 0-12-519260-6,
    LC: QA164.N54.
  3. Ian Sloan, Stephen Joe,
    Lattice Methods for Multiple Integration,
    Oxford University Press, 1994,
    ISBN: 0198534728,
    LC: QA311.S56

Source Code:


Last revised on 25 July 2020.