org.apache.commons.math3.analysis.polynomials

## Class PolynomialsUtils

- java.lang.Object
- - org.apache.commons.math3.analysis.polynomials.PolynomialsUtils

    public class PolynomialsUtils
    extends Object

A collection of static methods that operate on or return polynomials.

Since:
  2.0
Version:
  $Id: PolynomialsUtils.java 1364387 2012-07-22 18:14:11Z tn $

### Nested Class Summary

Nested Classes
`private static class` `PolynomialsUtils.JacobiKey` Inner class for Jacobi polynomials keys.
`private static interface` `PolynomialsUtils.RecurrenceCoefficientsGenerator` Interface for recurrence coefficients generation.

### Field Summary

Fields
`private static List<BigFraction>` `CHEBYSHEV_COEFFICIENTS` Coefficients for Chebyshev polynomials.
`private static List<BigFraction>` `HERMITE_COEFFICIENTS` Coefficients for Hermite polynomials.
`private static Map<PolynomialsUtils.JacobiKey,List<BigFraction>>` `JACOBI_COEFFICIENTS` Coefficients for Jacobi polynomials.
`private static List<BigFraction>` `LAGUERRE_COEFFICIENTS` Coefficients for Laguerre polynomials.
`private static List<BigFraction>` `LEGENDRE_COEFFICIENTS` Coefficients for Legendre polynomials.

### Constructor Summary

Constructors
`private` `PolynomialsUtils()` Private constructor, to prevent instantiation.

### Method Summary

Methods
`private static PolynomialFunction` `buildPolynomial(int degree, List<BigFraction> coefficients, PolynomialsUtils.RecurrenceCoefficientsGenerator generator)` Get the coefficients array for a given degree.
`private static void` `computeUpToDegree(int degree, int maxDegree, PolynomialsUtils.RecurrenceCoefficientsGenerator generator, List<BigFraction> coefficients)` Compute polynomial coefficients up to a given degree.
`static PolynomialFunction` `createChebyshevPolynomial(int degree)` Create a Chebyshev polynomial of the first kind.
`static PolynomialFunction` `createHermitePolynomial(int degree)` Create a Hermite polynomial.
`static PolynomialFunction` `createJacobiPolynomial(int degree, int v, int w)` Create a Jacobi polynomial.
`static PolynomialFunction` `createLaguerrePolynomial(int degree)` Create a Laguerre polynomial.
`static PolynomialFunction` `createLegendrePolynomial(int degree)` Create a Legendre polynomial.
`static double[]` `shift(double[] coefficients, double shift)` Compute the coefficients of the polynomial `Ps(x)` whose values at point `x` will be the same as the those from the original polynomial `P(x)` when computed at `x + shift`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### CHEBYSHEV_COEFFICIENTS

    private static final List<BigFraction> CHEBYSHEV_COEFFICIENTS

Coefficients for Chebyshev polynomials.

#### HERMITE_COEFFICIENTS

    private static final List<BigFraction> HERMITE_COEFFICIENTS

Coefficients for Hermite polynomials.

#### LAGUERRE_COEFFICIENTS

    private static final List<BigFraction> LAGUERRE_COEFFICIENTS

Coefficients for Laguerre polynomials.

#### LEGENDRE_COEFFICIENTS

    private static final List<BigFraction> LEGENDRE_COEFFICIENTS

Coefficients for Legendre polynomials.

#### JACOBI_COEFFICIENTS

    private static final Map<PolynomialsUtils.JacobiKey,List<BigFraction>> JACOBI_COEFFICIENTS

Coefficients for Jacobi polynomials.

### Constructor Detail

#### PolynomialsUtils

    private PolynomialsUtils()

Private constructor, to prevent instantiation.

### Method Detail

#### createChebyshevPolynomial

    public static PolynomialFunction createChebyshevPolynomial(int degree)

Create a Chebyshev polynomial of the first kind.

Chebyshev polynomials of the first kind are orthogonal polynomials. They can be defined by the following recurrence relations:

      T0(X)   = 1
      T1(X)   = X
      Tk+1(X) = 2X Tk(X) - Tk-1(X)

Parameters:
  `degree` - degree of the polynomial
Returns:
  Chebyshev polynomial of specified degree

#### createHermitePolynomial

    public static PolynomialFunction createHermitePolynomial(int degree)

Create a Hermite polynomial.

Hermite polynomials are orthogonal polynomials. They can be defined by the following recurrence relations:

      H0(X)   = 1
      H1(X)   = 2X
      Hk+1(X) = 2X Hk(X) - 2k Hk-1(X)

Parameters:
  `degree` - degree of the polynomial
Returns:
  Hermite polynomial of specified degree

#### createLaguerrePolynomial

    public static PolynomialFunction createLaguerrePolynomial(int degree)

Create a Laguerre polynomial.

Laguerre polynomials are orthogonal polynomials. They can be defined by the following recurrence relations:

            L0(X)   = 1
            L1(X)   = 1 - X
      (k+1) Lk+1(X) = (2k + 1 - X) Lk(X) - k Lk-1(X)

Parameters:
  `degree` - degree of the polynomial
Returns:
  Laguerre polynomial of specified degree

#### createLegendrePolynomial

    public static PolynomialFunction createLegendrePolynomial(int degree)

Create a Legendre polynomial.

Legendre polynomials are orthogonal polynomials. They can be defined by the following recurrence relations:

            P0(X)   = 1
            P1(X)   = X
      (k+1) Pk+1(X) = (2k+1) X Pk(X) - k Pk-1(X)

Parameters:
  `degree` - degree of the polynomial
Returns:
  Legendre polynomial of specified degree

#### createJacobiPolynomial

    public static PolynomialFunction createJacobiPolynomial(int degree,
                                            int v,
                                            int w)

Create a Jacobi polynomial.

Jacobi polynomials are orthogonal polynomials. They can be defined by the following recurrence relations:

            P0vw(X)   = 1
            P-1vw(X)  = 0
      2k(k + v + w)(2k + v + w - 2) Pkvw(X) =
      (2k + v + w - 1)[(2k + v + w)(2k + v + w - 2) X + v2 - w2] Pk-1vw(X)
      - 2(k + v - 1)(k + w - 1)(2k + v + w) Pk-2vw(X)

Parameters:
  `degree` - degree of the polynomial
  `v` - first exponent
  `w` - second exponent
Returns:
  Jacobi polynomial of specified degree

#### shift

    public static double[] shift(double[] coefficients,
                 double shift)

Compute the coefficients of the polynomial `Ps(x)` whose values at point `x` will be the same as the those from the original polynomial `P(x)` when computed at `x + shift`. Thus, if `P(x) = Σi ai xi`, then

        Ps(x)
        = Σi bi xi

        = Σi ai (x + shift)i

Parameters:
  `coefficients` - Coefficients of the original polynomial.
  `shift` - Shift value.
Returns:
  the coefficients `bi` of the shifted polynomial.

#### buildPolynomial

    private static PolynomialFunction buildPolynomial(int degree,
                                     List<BigFraction> coefficients,
                                     PolynomialsUtils.RecurrenceCoefficientsGenerator generator)

Get the coefficients array for a given degree.

Parameters:
  `degree` - degree of the polynomial
  `coefficients` - list where the computed coefficients are stored
  `generator` - recurrence coefficients generator
Returns:
  coefficients array

#### computeUpToDegree

    private static void computeUpToDegree(int degree,
                         int maxDegree,
                         PolynomialsUtils.RecurrenceCoefficientsGenerator generator,
                         List<BigFraction> coefficients)

Compute polynomial coefficients up to a given degree.

Parameters:
  `degree` - maximal degree
  `maxDegree` - current maximal degree
  `generator` - recurrence coefficients generator
  `coefficients` - list where the computed coefficients should be appended