OPQ: A MATLAB SUITE OF PROGRAMS FOR GENERATING ORTHOGONAL POLYNOMIALS<BR>AND RELATED QUADRATURE RULES

OPQ: A MATLAB SUITE OF PROGRAMS FOR GENERATING ORTHOGONAL POLYNOMIALS
AND RELATED QUADRATURE RULES

Walter Gautschi



This set of Matlab codes is a companion piece to the book ``Orthogonal Polynomials: Computation and Approximation'', Clarendon Press, Oxford, 2004. The routines, among others, implement all computational procedures discussed therein and provide code for the examples, tables, and figures. The book is referenced below as ``OPCA''.


ORTHOGONAL POLYNOMIALS

1. Three-Term Recurrence Relation

This section contains M-files for generating the coefficients alpha_k and beta_k in the three-term recurrence relation

p_{k+1}(t)=(t-alpha_k) p_k(t) - beta_k p_{k-1}(t)

for monic orthogonal polynomials. Many of these are classical, others are not. The next two sections provide additional routines for computing these coefficients, based on the modified Chebyshev algorithm, Lanczos's algorithm, and a multiple-component discretization method. Many of the routines are transcriptions of Fortran programs in W. Gautschi, ``Algorithm 726: ORTHPOL -- a package of routines for generating orthogonal polynomials and Gauss-type quadrature rules'', ACM Trans. Math. Software 20 (1994), 21-62. See OPCA, §§1.3, 1.5, 2.1.9, 2.2.5.

quadgj.m  quadjp.m  r_Bspline_dis.m  r_Emfin.m  r_Enumod.m  r_OPhrbimod.m  r_algexp.m  r_algexpabslog.m  r_alglog1.m  r_alglog2.m  r_assoc_legendre.m  r_blockhahn.m  r_cBspline_dis.m  r_cBspline_dis_old.m  r_chebleg.m  r_dblexp.m  r_dblexp_freud.m  r_ellcheb.m  r_elliptic.m  r_explog.m  r_explog01.m  r_gjacobi.m  r_hahn.m  r_hatfcn_dis.m  r_hatfcn_mcheb.m  r_hermite.m  r_hrhermite.m  r_jaclog.m  r_jacobi.m  r_jacobi01.m  r_jacplusdis.m  r_jacplusdis_cheb.m  r_lagplusdis.m  r_laguerre.m  r_logist.m  r_logistic.m  r_lower_subrange_jacobi.m  r_lsrbinet.m  r_marchenko_pastur_cheb.m  r_marchenko_pastur_cheb_old.m  r_marchenko_pastur_dis.m  r_marchenko_pastur_dis_old.m  r_marchenko_pastur_mod.m  r_maxwell.m  r_meixner_pollaczek.m  r_modbess.m  r_morse.m  r_mpplusdis.m  r_radtrans_dis.m  r_symm_subrange_jacobi.m

2. Modified Chebyshev Algorithm. See OPCA, §2.1.7.

chebyshev.m

3. Discretization Methods. See OPCA, §§2.2.2--2.2.6.

fejer.m  quadgp.m  stieltjes.m  lanczos.m  mcdis.m  mcchebyshev.m

4. Computing Cauchy Integrals

The M-files in this section compute Cauchy integrals and related functions, the kernels of the remainder term in Gauss quadrature for analytic functions, and provide routines for the Stieltjes-Perron inversion formula and Hilbert transforms. There are also two routines that apply Cauchy integrals to the problem of modifying a measure (and its recurrence coefficients) by dividing it by a polynomial. All M-files, except for the last three, are transcriptions of Fortran routines in W. Gautschi, ``Algorithm 726: ORTHPOL -- a package of routines for generating orthogonal polynomials and Gauss-type quadrature rules'', ACM Trans. Math. Software 20(1994), 21-62. See OPCA, §2.3

cauchy.m  nu0jac.m  nu0lag.m  nu0her.m  kernel.m  gchri1.m  gchri2.m  SPHT.m  SPjac.m  HTjac.m

5. Modification Algorithms

Given a weight function (or measure) w having orthogonal polynomials whose three-term recurrence relation is known, the problem here is to obtain the three-term recurrence relation of the polynomials orthogonal relative to the weight function rw, where r is a rational function. The M-files in this section provide the solution to this problem when r is a linear or quadratic factor or divisor. All except chri7.m are new. The routine chri7.m is a transcription of the routine chri, iopt=7, of W. Gautschi, ``Algorithm 726: ORTHPOL -- a package of routines for generating orthogonal polynomials and Gauss-type quadrature rules'', ACM Trans. Math. Software 20(1994), 21-62. See OPCA, §2.4.

chri1.m  chri2.m  chri3.m  chri4.m  chri5.m  chri6.m  chri7.m  chri8.m  indop.m

6. Sobolev Orthogonal Polynomials

These are polynomials pi_k, k=0,1,2,..., of exact degrees k orthogonal with respect to an inner product involving derivatives,

(p,q)_S=int [p(t)q(t)d_0(t)+p'(t)q'(t)d_1(t)+... +p^{(s)}(t)q^{(s)}(t)d_s(t)].

Here, s>=1 is a given integer, and d_j(t), j=0,1,...s, are given positive measures, some of which may be discrete, others absolutely continuous with possibly a discrete component superimposed. If the polynomials pi_k are assumed monic, there is an infinite upper Hessenberg matrix B[1:Inf,1:Inf] with B(i+1,i)=1, i=1,2,..., such that

pi_k(t)=B(k+1,k)*t*pi_{k-1}(t)-B(1,k)*pi_{k-1}(t)- B(2,k)*pi_{k-2}(t)-...-B(k,k)*pi_0(t), k=1,2,3,... .

The coefficients involved (from left to right) in this recurrence relation are those in the k-th column of B, moving (upward) from the element 1 in position (k+1,k) to the element B(k,k) in position (1,k). The zeros of pi_k are the eigenvalues of the k-th order leading principal minor matrix B_k=B[1:k,1:k] of B. The first two M-files in this section provide routines for generating the upper triangular part of the matrix B_N, whereas the third M-file generates the zeros of pi_N. The last routine implements a Clenshaw-like algorithm for evaluating finite sums and their derivatives in Sobolev orthogonal polynomials. See OPCA, §2.5.

chebyshev_sob.m  stieltjes_sob.m  althammer.m  sobzeros.m  clenshaw_sob.m


QUADRATURE

1. Gauss-Type Quadrature

This section provides M-files for generating Gauss, Gauss-Radau, Gauss-Lobatto, generalized Gauss-Radau, and generalized Gauss-Lobatto quadrature formulae from the recurrence coefficients of the underlying weight function (or measure). See OPCA, §3.1.1.

gauss.m  radau.m  radau_jacobi.m  radau_laguerre.m  lobatto.m  lobatto_jacobi.m  gradau.m  globatto.m

2. Gauss-Kronrod Quadrature

The two M-files in this section generate respectively the Jacobi-Kronrod matrix for a given weight function and the Gauss-Kronrod quadrature rule (if it exists). See OPCA, §3.1.2.

r_kronrod.m  kronrod.m

3. Gauss-Turán Quadrature

The M-file below generates the Gauss-Turán quadrature rule. See OPCA, §3.1.3.

turan.m

4. Polynomial/Rational Gauss-Type Quadrature

Functions having poles are integrated more profitably by quadrature rules that are exact not only for polynomials, but also for elementary rational functions having the same poles, or at least those closest to the interval of integration. TheM-files in this section are designed to help generate such quadrature rules that in some sense have maximum degree of exactness. A detailed description of how they are constructed is given in W. Gautschi, ``Algorithm 793: GQRAT -- Gauss quadrature for rational functions'', ACM Trans. Math. Software 25 (1999), 213-239. See OPCA, §3.1.4.

r_mod.m  quadrat.m  gauss_rational.m  radau_rational.m  lobatto_rational.m  kronrod_rational.m

5. Fermi-Dirac and Bose-Einstein Integrals

These integrals, of interest in solid state physics, are amenable to polynomial/rational quadrature methods. The M-files below implement these methods, also in cases where the integrand has poles very close to the interval of integration. See OPCA, §3.1.4.3.

fermi_dirac.m  fex30.m  bose_einstein.m  fex31.m  bose_einstein_diffpole.m  fex32.m

6. Cauchy Principal Value Integrals

Two versions of Gauss quadrature are used to compute Cauchy principal value integrals. See OPCA, §3.1.5.

cauchyPVI.m

7. Polynomials Orthogonal on Several Intervals

There are Stieltjes and modified Chebyshev algorithms designed for measures on multiple domains. Both use matrix formulations of Gauss quadrature sums. See OPCA, §3.1.6.

r_multidomain_sti.m  r_multidomain_cheb.m

8. Least Squares Approximation

The first routine produces discrete polynomial least squares approximants and associated Fourier coefficients. The next two routines generate special Fourier coefficients based on Gauss and Gauss-Lobatto abscissae and weights. The last routine produces discrete Sobolev least-squares approximants and related Sobolev-Fourier coefficients. See OPCA, §§3.2.1, 3.2.3.

least_squares.m  fourier_gauss.m  fourier_lobatto.m  least_squares_sob.m

9. Weighted Newton-Cotes Quadrature

This routine generates the weights of a weighted n-point Newton-Cotes quadrature formula with given nodes and weight function w.

NewtCotes.m


UTILITY ROUTINES

A number of auxiliary Matlab routines and files are colleced here, which are useful in various contexts.

1. Mollifier Function. See OPCA, §2.1.2.

moll.m

2. Inverse of a Confluent Vandermonde Matrix. See OPCA, §2.1.4.

Tinv.m

3. Modified Moments

The first M-file below generates Legendre moments for a logarithmic weight function; it is used in r_jaclog.m. The second M-file computes Legendre moments for a squared logarithmic weight function; it is used in r_jaclogsq.m. The third M-file computes Chebyshev moments for an elliptic weight function; it is used in r_elliptic.m. See OPCA, §2.1.9.

mm_log.m  mm_logsq.m  mm_ell.m

4. Condition Numbers of Moment Maps. See OPCA, §§2.1.4--2.1.5.

acondGlow.m  gcondG.m  acondG.m  rcondG.m  g_n.m

5. Recurrence Coefficients. See OPCA, Examples 2.30, 2.41, 2.42.

abhrhermite   half-range Hermite
abeinstein1   Einstein
abeinstein2   Einstein squared
abfermi1   Fermi
abfermi2   Fermi squared
absqp1einstein1   Einstein modified by square root factor
absqp1einstein2   Einstein squared modified by square root factor
absqm1einstein1   Einstein modified by square root divisor
absqm1einstein2   Einstein squared modified by square root divisor
absqp1fermi1   Fermi modified by square root factor
absqp1fermi2   Fermi squared modified by square root factor
absqm1fermi1   Fermi modified by square root divisor
absqm1fermi2   Fermi squared modified by square root divisor
abjaclog   Modified logarithm
absqm1log1   Logarithm modified by square root divisor
absqm1log2   Logarithm squared modified by square root divisor

6. Conversion and Clenshaw Algorithms. See OPCA, §2.1.8.

convert.m  clenshaw.m  clenshaw_cheb.m

7. Epsilon Algorithm. See OPCA, §2.3.3.

epsalg.m

8. Moment-preserving Spline Approximation. See OPCA, §3.3.

abhrhermite  stepfunc.m  heaviside.m  splinefunc.m


EXAMPLES AND TESTS

Below are the Matlab routines used to compute the examples and tests.

1. Modified Chebyshev Algorithm. See OPCA, §2.1.9.

Example2_29.m  2. Discretization Methods. See OPCA, §§2.2.2--2.2.6.

Example2_33.m  Example2_34.m  Example2_37.m  Example2_38.m  gjactest.m  Example2_42.m  quadeinstein.m  quadfermi.m  Example2_43.m  quadsqeinstein.m  quadsqfermi.m  Example2_46.m  quadch.m

3. Sobolev Orthogonal Polynomials. See OPCA, §2.5.3.

Example2_63.m  Example2_64.m

4. Quadrature. See OPCA, §§3.1.2.2--3.1.6.

Example3_19.m  Example3_23.m  Example3_24.m  Example3_31.m  fex31.m  Example3_32.m  fex32.m  Example3_33.m  fex33.m  Example3_34.m  fex34.m  Example3_35.m  fex35.m  Example3_36.m  fex37.m  Example3_37.m  Example3_42.m  Example3_44.m  fex44.m  ddfex44.m  Example3_45.m  test_gradau_req2.m  test_gradau_rgt0.m  test_gradau_radau.m  test_globatto_req2.m  test_globatto_rgt0.m  test_globatto_lobatto.m

5. Least Squares Approximation. See OPCA, §§3.2.1, 3.2.2

Example3_48.m  Example3_49.m  Example3_51.m  Example3_52.m  Example3_53.m

6. Moment-preserving Spline Approximation. See OPCA, §3.3.1

Example3_55.m  Example3_59.m  Example3_60.m  qherm.m

7. Slowly Convergent Series. See OPCA, §3.4.

Example3_63.m  Example3_64.m  fHL.m  Example3_65.m  Example3_66.m  Example3_67.m  Example3_68.m  Example3_69.m  Example3_70.m  Example3_71.m


TABLES AND FIGURES

The M-files listed here are used to produce the numerical tables and the figures.

1. Condition of Moment Maps. See OPCA, §2.1.4.

Table2_1.m  Table2_2.m  quadcl.m  Table2_3.m

2. Modified Chebyshev Algorithm. See OPCA, §2.1.9.

Table2_4.m  Table2_5.m  Table2_6.m  Table2_7.m  Table2_8.m

3. Discretization Methods. See OPCA, §§2.2.3.1--2.2.5.

Table2_9.m  Table2_10.m  befej40  befej80  befej160  befej320  Table2_11.m  Table2_12.m  Table2_14.m  Table2_15.m  Table2_18.m  quadlag.m  Table2_19.m  quadbess.m  Figure2_2.m

4. Cauchy Integrals. See OPCA, §2.3.3.

Table2_20.m  Figure2_3.m

5. Modification Algorithms. See OPCA, §2.4.6.

Table2_22.m  Table2_23.m  Table2_24.m  Table2_25.m  Table2_26.m  Table2_27.m  Table2_28.m

6. Sobolev Orthogonal Polynomials. See OPCA, §2.5.1.

Table2_29.m

7. Least Squares Approximation. See OPCA, §3.2.2.

Figure3_3.m  Figure3_4.m