Package "OrthogonalPolynomials" for Mathematica (Orthogonal Polynomials and Quadrature Formulas)

Version: 2.0 | License: Free for academic and research use


Overview

OrthogonalPolynomials is a comprehensive Mathematica package for symbolic and numerical computations with orthogonal polynomials and Gaussian quadrature formulas.

Key Features

  • Symbolic & Numerical - Exact symbolic and arbitrary-precision numerical evaluation
  • Gaussian Quadratures - Construction of various Gaussian-type quadrature rules
  • TTR Coefficients - Algorithms for computing three-term recurrence coefficients
  • Measure Modifications - Christoffel algorithms for modifying orthogonal polynomial measures
  • Comprehensive Coverage - 23+ classes of orthogonal polynomials

Supported Polynomial Classes

Continuous Orthogonal Polynomials

PolynomialSymbolSupportParameters
JacobiaJacobi[-1, 1]alpha, beta > -1
LegendreaLegendre[-1, 1]
Chebyshev IaChebyshevI[-1, 1]
Chebyshev IIaChebyshevII[-1, 1]
GegenbaueraGegenbauer[-1, 1]lambda > -1/2
Generalized GegenbaueraGegenbauerG[-1, 1]lambda, mu > -1/2
LaguerreaLaguerre[0, infinity)alpha > -1
Generalized LaguerreaLaguerreG[0, infinity)alpha, s
HermiteaHermite(-infinity, infinity)
Generalized HermiteaHermiteG(-infinity, infinity)parameter
Associated LegendreaAssociatedLegendre[-1, 1]m >= 0
Stieltjes-WigertaStieltjesWigert[0, infinity)
AbelaAbel[0, infinity)
LindelofaLindelof(-infinity, infinity)
CarlitzaCarlitz[0, infinity)
LogisticaLogistic(-infinity, infinity)

Discrete Orthogonal Polynomials

PolynomialSymbolSupportParameters
CharlieraCharlier{0, 1, 2, ...}a > 0
Chebyshev MaChebyshevMdiscrete
Chebyshev NaChebyshevNdiscrete
PQ PolynomialsaPQdiscrete

Complex-Support Polynomials

PolynomialSymbolSupportParameters
BesselaBesselUnit circle
Generalized BesselaBesselGUnit circle
Gautschi-MilovanovicaGautschiMilovanovicComplex

Core Capabilities

1. Three-Term Recurrence (TTR) Coefficients

Compute coefficients alpha_n and beta_n in:

p_{n+1}(x) = (x - alpha_n) * p_n(x) - beta_n * p_{n-1}(x)

Algorithms: aChebyshevAlgorithm, aChebyshevAlgorithmModified, aStieltjesAlgorithm, aLanczosAlgorithm, aThreeTermRecurrence

Each polynomial provides TTR via name["ttr", parameters].

2. Gaussian Quadrature Rules

Quadrature TypeFunctionDescription
GaussianaGaussianNodesWeightsStandard n-point Gaussian quadrature
Gauss-RadauaRadauNodesWeightsOne endpoint fixed
Gauss-LobattoaLobattoNodesWeightsBoth endpoints fixed
Gauss-KronrodaKronrodNodesWeights2n+1 point extension
Gauss-TuranaTuranNodesWeightsUses derivatives
SigmaaSigmaNodesWeightsVariable multiplicity
Anti-GaussianaAntiGaussianNodesWeights2n+1 nodes for error estimation
FejeraFejerNodesWeightsInterpolatory on Chebyshev nodes

Node Algorithms: aQR, aPasquini, aDevideConquer, aLaurie

3. Christoffel Modifications

Multiplication: aLinear, aQuadratic, aQuadraticSymmetric, aQuadraticReal

Division: aLinearDivisor, aQuadraticDivisor, aQuadraticDivisorSymmetric

Associated: aFunctionIIKind, aModify

4. Other Functions

aMakePolynomial, aKernel, aNumerator, aWeight, aMoments, aNorm, aChangeInterval

5. Trigonometric Polynomials

aCreateTTRSinPeriodicPi, aCreateTTRCos, aCreateTrigPolynomial


Installation Instructions

Quick Installation

  1. Download OrthogonalPolynomials.zip

  2. Locate Mathematica applications directory:

    • Windows: C:\Users\<Username>\AppData\Roaming\Mathematica\Applications\
    • macOS: ~/Library/Mathematica/Applications/
    • Linux: ~/.Mathematica/Applications/
  3. Extract zip into this directory (creates OrthogonalPolynomials/ folder)

  4. Load in Mathematica:

<< OrthogonalPolynomials`

Zip includes: Core algorithms, 23+ polynomial classes, documentation (~500 KB)

Verification

<< OrthogonalPolynomials`
aSupportedPolynomials["Continuous"]
aJacobi[5, 0.5, 0.5, 0.3]
aJacobi["ttr", 0.5, 0.5][k]

Quick Start Guide

Example 1: Evaluate Polynomials

<< OrthogonalPolynomials`
aLegendre[5, 0.5]
aJacobi[10, 0.5, 0.5, 0.3, WorkingPrecision -> 50]
aHermite[5, 1.0, ReturnList -> True]

Example 2: Gaussian Quadrature

{nodes, weights} = aGaussianNodesWeights[10, aLegendre]
Sum[weights[[i]] * nodes[[i]]^18, {i, 1, 10}]

Example 3: TTR from Moments

moments = Table[(1 + (-1)^k)/(k + 1), {k, 0, 20}];
{alpha, beta} = aChebyshevAlgorithm[moments, WorkingPrecision -> 30]

Example 4: Christoffel Modification

{alpha, beta} = Transpose[Table[aJacobi["ttr", 0, 0][k], {k, 0, 20}]];
{alphaMod, betaMod} = aChristoffelAlgorithm[10, {aLinear, 0.5}, alpha, beta]

Example 5: Gauss-Turan Quadrature

{nodes, weights} = aTuranNodesWeights[5, aLegendre, 2]

System Requirements

  • Mathematica 11.0 or later
  • Memory: 512 MB minimum (2+ GB recommended)
  • Disk Space: ~2 MB

Documentation

Access usage messages via ?functionName in Mathematica:

?aGaussianNodesWeights
?aChebyshevAlgorithm

Full documentation in Documentation/English/ directory.


Package Version: 2.0