CHEBYSHEV_POLYNOMIAL
Chebyshev Polynomials
CHEBYSHEV_POLYNOMIAL
is a MATLAB library which
considers the Chebyshev polynomials T(i,x), U(i,x), V(i,x) and W(i,x).
Functions are provided to evaluate the polynomials, determine their zeros,
produce their polynomial coefficients, produce related quadrature rules,
project other functions onto these polynomial bases, and integrate
double and triple products of the polynomials.
The Chebyshev polynomial T(n,x), or Chebyshev polynomial of the first kind,
may be defined, for 0 <= n, and 1 <= x <= +1 by:
cos ( t ) = x
T(n,x) = cos ( n * t )
For any value of x, T(n,x) may be evaluated by a three
term recurrence:
T(0,x) = 1
T(1,x) = x
T(n+1,x) = 2x T(n,x)  T(n1,x)
The Chebyshev polynomial U(n,x), or Chebyshev polynomial of the second kind,
may be defined, for 0 <= n, and 1 <= x <= +1 by:
cos ( t ) = x
U(n,x) = sin ( ( n + 1 ) t ) / sin ( t )
For any value of x, U(n,x) may be evaluated by a three
term recurrence:
U(0,x) = 1
U(1,x) = 2x
U(n+1,x) = 2x U(n,x)  U(n1,x)
The Chebyshev polynomial V(n,x), or Chebyshev polynomial of the third kind,
may be defined, for 0 <= n, and 1 <= x <= +1 by:
cos ( t ) = x
V(n,x) = cos ( (2n+1)*t/2) / cos ( t/2)
For any value of x, V(n,x) may be evaluated by a three
term recurrence:
V(0,x) = 1
V(1,x) = 2x1
V(n+1,x) = 2x V(n,x)  V(n1,x)
The Chebyshev polynomial W(n,x), or Chebyshev polynomial of the fourth kind,
may be defined, for 0 <= n, and 1 <= x <= +1 by:
cos ( t ) = x
W(n,x) = sin((2*n+1)*t/2)/sin(t/2)
For any value of x, W(n,x) may be evaluated by a three
term recurrence:
W(0,x) = 1
W(1,x) = 2x+1
W(n+1,x) = 2x W(n,x)  W(n1,x)
Licensing:
The computer code and data files described and made available on this
web page are distributed under
the GNU LGPL license.
Languages:
CHEBYSHEV_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:
BERNSTEIN_POLYNOMIAL,
a MATLAB library which
evaluates the Bernstein polynomials,
useful for uniform approximation of functions;
CHEBYSHEV,
a MATLAB library which
computes the Chebyshev interpolant/approximant to a given function
over an interval.
chebyshev_polynomial_test
CHEBYSHEV_SERIES,
a MATLAB library which
can evaluate a Chebyshev series approximating a function f(x),
while efficiently computing one, two or three derivatives of the
series, which approximate f'(x), f''(x), and f'''(x),
by Manfred Zimmer.
CHEBYSHEV1_RULE,
a MATLAB program which
computes and prints a GaussChebyshev type 1 quadrature rule.
CHEBYSHEV2_RULE,
a MATLAB program which
compute and print a GaussChebyshev type 2 quadrature rule.
GEGENBAUER_POLYNOMIAL,
a MATLAB library which
evaluates the Gegenbauer polynomial and associated functions.
HERMITE_POLYNOMIAL,
a MATLAB library which
evaluates the physicist's Hermite polynomial, the probabilist's Hermite polynomial,
the Hermite function, and related functions.
INT_EXACTNESS_CHEBYSHEV1,
a MATLAB program which
tests the polynomial exactness of GaussChebyshev type 1 quadrature rules.
INT_EXACTNESS_CHEBYSHEV2,
a MATLAB program which
tests the polynomial exactness of GaussChebyshev type 2 quadrature rules.
JACOBI_POLYNOMIAL,
a MATLAB library which
evaluates the Jacobi polynomial and associated functions.
LAGUERRE_POLYNOMIAL,
a MATLAB library which
evaluates the Laguerre polynomial, the generalized Laguerre polynomial,
and the Laguerre function.
LEGENDRE_POLYNOMIAL,
a MATLAB library which
evaluates the Legendre polynomial and associated functions.
LOBATTO_POLYNOMIAL,
a MATLAB library which
evaluates Lobatto polynomials, similar to Legendre polynomials
except that they are zero at both endpoints.
POLPAK,
a MATLAB library which
evaluates a variety of mathematical functions.
TEST_VALUES,
a MATLAB library which
supplies test values of various mathematical functions.
Reference:

Theodore Chihara,
An Introduction to Orthogonal Polynomials,
Gordon and Breach, 1978,
ISBN: 0677041500,
LC: QA404.5 C44.

Walter Gautschi,
Orthogonal Polynomials: Computation and Approximation,
Oxford, 2004,
ISBN: 0198506724,
LC: QA404.5 G3555.

John Mason, David Handscomb,
Chebyshev Polynomials,
CRC Press, 2002,
ISBN: 08493035509,
LC: QA404.5.M37.

Frank Olver, Daniel Lozier, Ronald Boisvert, Charles Clark,
NIST Handbook of Mathematical Functions,
Cambridge University Press, 2010,
ISBN: 9780521192255,
LC: QA331.N57.

Gabor Szego,
Orthogonal Polynomials,
American Mathematical Society, 1992,
ISBN: 0821810235,
LC: QA3.A5.v23.
Source Code:

i4_uniform_ab.m,
returns a scaled pseudorandom I4.

imtqlx.m,
diagonalizes a symmetric tridiagonal matrix;

r8_factorial.m,
returns N factorial as an R8;

r8_hyper_2f1.m,
evaluates the 2F1 hypergeometric function.

r8_mop.m,
returns a power of 1 as an R8;

r8_psi.m,
returns the psi() function.

r8_sign.m,
returns the sign of an R8.

r8_uniform_ab.m,
returns a scaled pseudorandom R8.

r8mat_print.m,
prints an R8MAT;

r8mat_print_some.m,
prints some of an R8MAT;

r8vec_in_ab.m,
is TRUE if all elements of an R8VEC lie in [A,B].

r8vec_print.m,
prints an R8VEC;

r8vec_uniform_01.m,
returns a uniform pseudorandom R8VEC in [0,1].

r8vec2_print.m,
prints a pair of R8VEC's;

t_mass_matrix.m,
computes the mass matrix for the Chebyshev T polynomial.

t_moment.m,
integral ( 1 <= x <= +1 ) x^e/sqrt(1x^2) dx.

t_polynomial.m,
evaluates the Chebyshev polynomials T(n,x).

t_polynomial_01_values.m,
returns selected values of the shifted Chebyshev polynomials T01(n,x).

t_polynomial_ab.m,
evaluates the Chebyshev polynomials TAB(n,x) shifted to [A,B].

t_polynomial_ab_value.m,
evaluates a Chebyshev polynomial TAB(n,x) shifted to [A,B].

t_polynomial_coefficients.m,
evaluates the coefficients of the Chebyshev polynomials T(n,x).

t_polynomial_plot.m,
plots selected Chebyshev polynomials T(n,x).

t_polynomial_value.m,
evaluates one Chebyshev polynomial T(n,x) at one point.

t_polynomial_values.m,
returns selected values of the Chebyshev polynomials T(n,x).

t_polynomial_zeros.m,
returns the zeros of the Chebyshev polynomials T(n,x).

t_project_coefficients.m,
given a function in [1,1], estimates the coefficients of a corresponding
Chebyshev expansion of degree N.

t_project_coefficients_ab.m,
given a function in [A,B], estimates the coefficients of a corresponding
Chebyshev expansion of degree N.

t_project_coefficients_data.m,
given N arbitrary data values in [A,B], estimates the coefficients
of a corresponding Chebyshev expansion of degree N.

t_project_value.m,
evaluates an expansion of degree N in Chebyshev polynomials T(n,x)
over [1,+1].

t_project_value_ab.m,
evaluates an expansion of degree N in Chebyshev polynomials T(n,x)
over [A,B].

t_quadrature_rule.m,
computes a quadrature rule for f(x)/sqrt(1x^2) based on T(n,x).

timestamp.m,
prints the current YMDHMS date as a time stamp.

tt_product.m,
evaluate T(i,x)*T(j,x).

tt_product_integral.m,
integral ( 1 <= x <= +1 ) T(i,x)*T(j,x)/sqrt(1x^2) dx.

ttt_product_integral.m,
integral (1<=x<=1) T(i,x)*T(j,x)*T(k,x)/sqrt(1x^2) dx

tu_product.m,
evaluate T(i,x)*U(j,x).

u_mass_matrix.m,
computes the mass matrix for the Chebyshev U polynomial.

u_moment.m,
integral ( 1 <= x <= +1 ) x^e * sqrt(1x^2) dx.

u_polynomial.m,
evaluates the Chebyshev polynomials U(n,x).

u_polynomial_01_values.m,
returns selected values of the shifted Chebyshev polynomials U01(n,x).

u_polynomial_ab.m,
evaluates the Chebyshev polynomials UAB(n,x) shifted to [A,B].

u_polynomial_ab_value.m,
evaluates a Chebyshev polynomial UAB(n,x) shifted to [A,B].

u_polynomial_coefficients.m,
evaluates the coefficients of the Chebyshev polynomials U(n,x).

u_polynomial_plot.m,
plots selected Chebyshev polynomials U(n,x).

u_polynomial_value.m,
evaluates one Chebyshev polynomial U(n,x) at one point.

u_polynomial_values.m,
returns selected values of the Chebyshev polynomials U(n,x).

u_polynomial_zeros.m,
returns the zeros of the Chebyshev polynomials U(n,x).

u_quadrature_rule.m,
computes a quadrature rule for f(x)*sqrt(1x^2) based on U(n,x).

uu_product.m,
evaluate U(i,x)*U(j,x).

uu_product_integral.m,
integral ( 1 <= x <= +1 ) U(i,x)*U(j,x)*sqrt(1x^2) dx.

v_mass_matrix.m,
computes the mass matrix for the Chebyshev V polynomial.

v_moment.m,
integral ( 1 <= x <= +1 ) x^e * sqrt(1+x) / sqrt(1x) dx.

v_polynomial.m,
evaluates the Chebyshev polynomials V(n,x).

v_polynomial_01_values.m,
returns selected values of the shifted Chebyshev polynomials V01(n,x).

v_polynomial_ab.m,
evaluates the Chebyshev polynomials VAB(n,x) shifted to [A,B].

v_polynomial_ab_value.m,
evaluates a Chebyshev polynomial VAB(n,x) shifted to [A,B].

v_polynomial_coefficients.m,
evaluates the coefficients of the Chebyshev polynomials V(n,x).

v_polynomial_plot.m,
plots selected Chebyshev polynomials V(n,x).

v_polynomial_value.m,
evaluates one Chebyshev polynomial V(n,x) at one point.

v_polynomial_values.m,
returns selected values of the Chebyshev polynomials V(n,x).

v_polynomial_zeros.m,
returns the zeros of the Chebyshev polynomials V(n,x).

v_quadrature_rule.m,
computes a quadrature rule for f(x)*sqrt(1+x)/sqrt(1x) based on V(n,x).

vv_product_integral.m,
integral ( 1 <= x <= +1 ) V(i,x)*V(j,x)*sqrt(1+x)/sqrt(1x) dx.

w_mass_matrix.m,
computes the mass matrix for the Chebyshev W polynomial.

w_moment.m,
integral ( 1 <= x <= +1 ) x^e * sqrt(1x) / sqrt(1+x) dx.

w_polynomial.m,
evaluates the Chebyshev polynomials W(n,x).

w_polynomial_01_values.m,
returns selected values of the shifted Chebyshev polynomials W01(n,x).

w_polynomial_ab.m,
evaluates the Chebyshev polynomials WAB(n,x) shifted to [A,B].

w_polynomial_ab_value.m,
evaluates a Chebyshev polynomial WAB(n,x) shifted to [A,B].

w_polynomial_coefficients.m,
evaluates the coefficients of the Chebyshev polynomials W(n,x).

w_polynomial_plot.m,
plots selected Chebyshev polynomials W(n,x).

w_polynomial_value.m,
evaluates one Chebyshev polynomial W(n,x) at one point.

w_polynomial_values.m,
returns selected values of the Chebyshev polynomials W(n,x).

w_polynomial_zeros.m,
returns the zeros of the Chebyshev polynomials W(n,x).

w_quadrature_rule.m,
computes a quadrature rule for f(x)*sqrt(1x)/sqrt(1+x) based on W(n,x).

ww_product_integral.m,
integral ( 1 <= x <= +1 ) W(i,x)*W(j,x)*sqrt(1x)/sqrt(1+x) dx.
Last revised on 10 December 2018.