Orthogonal Polynomials
Orthogonal polynomials arise in physics, engineering and other areas as the solutions to certain differential equations.
Numerics.NET provides support for the most common types: Chebyshev polynomials of the first and second kind, Hermite polynomials, Legendre polynomials, Laguerre and generalized Laguerre polynomials, Gegenbauer polynomials, and Zernike polynomials.
Methods are provided for the evaluation of a single polynomial of the specified degree at a point, of a sequence of polynomials of increasing degree, and of a series or a linear combination of polynomials of increasing degree.
The names of these methods follow a consistent pattern. The base name is made up of the name of the polynomial followed by the conventional mathematical abbreviation. For example, the base name for Chebyshev polynomials of the first kind is ChebyshevT. The following table lists the base names for the supported polynomials:
Base name | Description |
---|---|
ChebyshevT | Chebyshev polynomials of the first kind, Tn. |
ChebyshevU | Chebyshev polynomials of the second kind, Un. |
HermiteH | Hermite polynomials, Hn. |
HermiteHe | Monic Hermite polynomials, Hen. |
JacobiP | Jacobi polynomials, Pn(α,β). |
LaguerreL | Laguerre polynomials, Ln and generalized Laguerre polynomials, Lnλ. |
GegenbauerC | Gegenbauer polynomials, Cn(λ). |
LegendreP | Legendre polynomials, Pn. |
ZernikeR | Radial Zernike polynomials, Rnm. |
ZernikeZ | Zernike polynomials, Znm. |
The base method evaluates the polynomial of a specified degree at a point. With Sequence appended to the base name, the method evaluates a sequence of polynomials of increasing order. Optional parameters let you specify the degree of the first polynomial in the sequence and a Vector<T> to hold the result. With Series appended to the base name, the method evaluates a linear combination of the polynomials with coefficients specified by a Vector<T>. An optional argument lets you specify the highest degree. The following table lists the methods for the evaluation of Chebyshev polynomials of the first kind. The methods for other polynomials are similar.
Method | Description |
---|---|
Evaluates the Chebyshev polynomial of the first kind of the specified degree. | |
["M:Numerics.NET.Special.ChebyshevTSequence(System.Double,System.Span{System.Double})] | Evaluates a sequence of Chebyshev polynomials of the first kind up to the specified degree. |
Evaluates a linear combination of Chebyshev polynomial of the first kind. |
The Zernike polynomials are somewhat different in that they are parameterized by a pair of integers: the radial degree and the azimuthal frequency. Several schemes exist to map these pairs to a linear sequence. The scheme must be passed as the first argument to any method that works with sequences or expansions of Zernike polynomials. It must take the form of a delegate that maps the radial degree and the azimuthal frequency to the linearized index. Several schemes are provided as fields of the Special class: ZernikeAnsiIndex, ZernikeNollIndex, and ZernikeWyantIndex.
In addition, the full Zernike polynomials take two arguments: a radial argument and an angular argument. The methods that evaluate Zernike polynomials or sequences or expansions thereof take an additional argument that specifies the angular component. So, for example, the ZernikeZ(Int32, Int32, Boolean, Double, Double) takes five arguments in all: two integers that specify the radial degree and azimuthal frequency, a boolean that specifies whether the polynomial should be normalized, and two real numbers that specify the radial and angular coordinate at which to evaluate the polynomial. By convention, a negative value for the azimuthal frequency indicates the sine component should be returned, while 0 or a positive value indicates the cosine component should be returned.