legendre_product_polynomial


legendre_product_polynomial, a C code which defines a Legendre product polynomial (LPP), creating a multivariate polynomial as the product of univariate Legendre polynomials.

The Legendre polynomials are a polynomial sequence L(I,X), with polynomial I having degree I.

The first few Legendre polynomials are

        0: 1
        1: x
        2: 3/2 x^2 - 1/2
        3: 5/2 x^3 - 3/2 x
        4: 35/8 x^4 - 30/8 x^2 + 3/8
        5: 63/8 x^5 - 70/8 x^3 + 15/8 x
      

A Legendre product polynomial may be defined in a space of M dimensions by choosing M indices. To evaluate the polynomial at a point X, compute the product of the corresponding Legendre polynomials, with each the I-th polynomial evaluated at the I-th coordinate:

        L((I1,I2,...IM),X) = L(1,X(1)) * L(2,X(2)) * ... * L(M,X(M)).
      

Families of polynomials which are formed in this way can have useful properties for interpolation, derivable from the properties of the 1D family.

While it is useful to generate a Legendre product polynomial from its index set, and it is easy to evaluate it directly, the sum of two Legendre product polynomials cannot be reduced to a single Legendre product polynomial. Thus, it may be useful to generate the Legendre product polynomial from its indices, but then to convert it to a standard polynomial form.

The representation of arbitrary multivariate polynomials can be complicated. In this library, we have chosen a representation involving the spatial dimension M, and three pieces of data, O, C and E.

The exponent indexing is done in a natural way, suggested by the following indexing for the case M = 2:

        1: x^0 y^0  
        2: x^0 y^1
        3: x^1 y^0
        4: x^0 y^2
        5: x^1 y^1
        6; x^2 y^0
        7: x^0 y^3
        8: x^1 y^2
        9: x^2 y^1
       10: x^3 y^0
       ...
      

Licensing:

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

Languages:

legendre_product_polynomial is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version and a Python version.

Related Data and Programs:

COMBO, a C code which includes routines for ranking, unranking, enumerating and randomly selecting balanced sequences, cycles, graphs, Gray codes, subsets, partitions, permutations, restricted growth functions, Pruefer codes and trees.

HERMITE_PRODUCT_POLYNOMIAL, a C code which defines Hermite product polynomials, creating a multivariate polynomial as the product of univariate Hermite polynomials.

LEGENDRE_POLYNOMIAL, a C code which evaluates the Legendre polynomial and associated functions.

legendre_product_polynomial_test

LEGENDRE_SHIFTED_POLYNOMIAL, a C code which evaluates the shifted Legendre polynomial, with domain [0,1].

MONOMIAL, a C code which enumerates, lists, ranks, unranks and randomizes multivariate monomials in a space of M dimensions, with total degree less than N, equal to N, or lying within a given range.

POLPAK, a C code which evaluates a variety of mathematical functions, including Chebyshev, Gegenbauer, Hermite, Jacobi, Laguerre, Legendre polynomials, and the Collatz sequence.

POLYNOMIAL, a C code which adds, multiplies, differentiates, evaluates and prints multivariate polynomials in a space of M dimensions.

SUBSET, a C code which enumerates, generates, ranks and unranks combinatorial objects including combinations, compositions, Gray codes, index sets, partitions, permutations, subsets, and Young tables.

Source Code:


Last revised on 10 July 2019.