% The Matlab Differentiation Matrix Suite
%
%by J.A.C. Weideman and S.C. Reddy
%
%This is a software package consisting of seventeen {\sc Matlab}
%functions for solving differential equations on bounded, periodic,
%and infinite intervals by the spectral collocation (pseudospectral)
%method. The package includes functions for generating differentiation
%matrices of arbitrary order corresponding to Chebyshev, Hermite,
%Laguerre, Fourier, and sinc interpolants. In addition, functions
%are included for computing derivatives via the fast Fourier transform
%for Chebyshev, Fourier, and Sinc interpolants. Auxiliary functions
%are included for incorporating boundary conditions, performing
%interpolation using barycentric formulas, and computing roots of
%orthogonal polynomials. In the accompanying paper it is demonstrated
%how to use the package by solving eigenvalue, boundary value, and
%initial value problems arising in the fields of special functions,
%quantum mechanics, nonlinear waves, and hydrodynamic stability.
%(The paper has been published in the ACM Transactions of Mathematical
% Software, Vol. 26, No. 4, December 2000, Pages 465-519.)
%
%
% ------------------------------------------------------------
% | We have made every effort to test these functions. |
% | However, NO GUARANTEES are made about their validity. |
% | Please send a email to weideman@sun.ac.za or |
% | reddy@intergate.ca if you find bugs or have comments |
% ------------------------------------------------------------
%
% Notes added May 2003:
% 1) The functions poldif.m and chebdif.m can probably be
% improved marginally by the suggestions in
% R. Baltensperger & M.R. Trummer, "Spectral Differencing
% with a Twist", to appear in SIAM J Sci Comp.
% 2) Almost all our codes will break down if the order of
% the matrix becomes too large; in the case of lagdif.m
% it is around 100x100 or so. If you need to use matrices
% this large, it begs the question whether you should be using
% this particular pseudospectral method at all.
%
%Summary of the {\sc Matlab} functions in the suite:
%--------------------------------------------------
%
%I. Differentiation Matrices (Polynomial Based)
%
%1. poldif.m: General differentiation matrices.
%2. chebdif.m: Chebyshev differentiation matrices.
%3. herdif.m: Hermite differentiation matrices.
%4. lagdif.m: Laguerre differentiation matrices.
%
%II. Differentiation Matrices (Non-Polynomial)
%
%1. fourdif.m: Fourier differentiation matrices.
%2. sincdif.m: Sinc differentiation matrices.
%
%III. Boundary Conditions
%
%1. cheb2bc.m: Chebyshev 2nd derivative matrix
% incorporating Robin conditions.
%2. cheb4c.m: Chebyshev 4th derivative matrix
% incorporating clamped conditions.
%
%IV. Interpolation
%
%1. polint.m: Barycentric polynomial interpolation on
% arbitrary distinct nodes
%2. chebint.m: Barycentric polynomial interpolation on
% Chebyshev nodes.
%3. fourint.m: Barycentric trigonometric interpolation at
% equidistant nodes.
%
%V. Transform-based derivatives
%
%1. chebdifft.m: Chebyshev derivative
%2. fourdifft.m: Fourier derivative
%3. sincdift.m: Sinc derivative
%
%VI. Roots of Orthogonal Polynomials
%
%1. legroots.m: Roots of Legendre polynomials.
%2. lagroots.m: Roots of Laguerre polynomials.
%3. herroots.m: Roots of Hermite polynomials.
%
%VII. Examples
%
%1. cerfa.m: Function file for computing the complementary
% error function. Boundary condition (a) is used.
%2. cerfb.m: Same as cerfa.m but boundary condition (b) is used.
%3. matplot.m: Script file for plotting the characteristic curves
% of Mathieu's equation.
%4. ce0.m: Function file for computing the Mathieu cosine
% elliptic function.
%5. sineg.m: Script file for solving the sine-Gordon equation.
%6. sgrhs.m: Function file for computing the right-hand side of
% the sine-Gordon system.
%7. schrod.m: Script file for computing the eigenvalues of the
% Schr\"odinger equation.
%8. orrsom.m: Script file for computing the eigenvalues of the
% Orr-Sommerfeld equation.