latin_edge


latin_edge, a C++ code which makes Latin Edge Squares.

A Latin square is a selection of one point from each row and column of a square matrix or table. In M dimensions, the corresponding item is a set of N points, where, in each dimension, there is exactly one point whose coordinates are in a given "column" or range of values. To emphasize the use of higher dimensions, these objects are sometimes called Latin hypersquares.

Once a Latin square has been selected, the center of each subsquare is chosen to yield a Latin Edge Square dataset. This is the same technique that yields a Latin Center Square dataset, with the difference that the mapping from the Latin Square to the unit square is shifted in such a way that the lowest and highest possible coordinate values are 0.0 and 1.0, instead of 1/(2*N) and (2*N-1)/(2*N).

Here is an image of a Latin edge grid with spatial dimension M = 2 and number of points N = 10.

Licensing:

The computer code and data files described and made available on this web page are distributed under the MIT license

Languages:

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

Related Data and Programs:

BOX_BEHNKEN, a C++ code which computes a Box-Behnken design, that is, a set of arguments to sample the behavior of a function of multiple parameters;

CVT, a C++ code which computes points in a Centroidal Voronoi Tessellation.

FAURE, a C++ code which computes Faure sequences.

HALTON, a C++ code which computes elements of a Halton Quasi Monte Carlo (QMC) sequence, using a simple interface.

HAMMERSLEY, a C++ code which computes elements of a Hammersley Quasi Monte Carlo (QMC) sequence, using a simple interface.

IHS, a C++ code which computes improved Latin Hypercube datasets.

LATIN_CENTER, a C++ code which computes Latin square data choosing the center value.

LATIN_COVER, a C++ code which produces N Latin squares which cover an NxN square, or NxN Latin cubes which cover an NxNxN cube.

latin_edge_test

LATIN_RANDOM, a C++ code which computes Latin square data choosing a random value in the square.

NIEDERREITER2, a C++ code which computes Niederreiter sequences with base 2.

NORMAL, a C++ code which computes elements of a sequence of pseudorandom normally distributed values.

SOBOL, a C++ code which computes Sobol sequences.

UNIFORM, a C++ code which computes uniform random values.

VAN_DER_CORPUT, a C++ code which computes van der Corput sequences.

Reference:

  1. Paul Bratley, Bennett Fox, Linus Schrage,
    A Guide to Simulation,
    Springer Verlag, pages 201-202, 1983.
  2. C J Colbourn, J H Dinitz,
    CRC Handbook of Combinatorial Design,
    CRC, 1996.
  3. Bennett Fox,
    Algorithm 647:
    Implementation and Relative Efficiency of Quasirandom Sequence Generators,
    ACM Transactions on Mathematical Software,
    Volume 12, Number 4, pages 362-376, 1986.
  4. M D McKay, W J Conover, R J Beckman,
    A Comparison of Three Methods for Selecting Values of Input Variables in the Analysis of Output From a Computer Code,
    Technometrics,
    Volume 21, pages 239-245, 1979.
  5. Albert Nijenhuis, Herbert Wilf,
    Combinatorial Algorithms,
    Academic Press, 1978, second edition,
    ISBN 0-12-519260-6.
  6. Herbert Ryser,
    Combinatorial Mathematics,
    Mathematical Association of America, 1963.

Source Code:


Last revised on 23 March 2020.