VANDERMONDE_APPROX_1D
Data Approximation with Polynomials using the Vandermonde Matrix
VANDERMONDE_APPROX_1D
is a MATLAB library which
finds a polynomial approximant to 1D data by setting up and
solving an overdetermined linear system involving the Vandermonde matrix.
This software is primarily intended as an illustration of the problems
that can occur when the approximatino problem is naively formulated
using the Vandermonde matrix. Unless the data points are well separated,
and the degree of the polynomial is low, the linear system will become
very difficult to store and solve accurately, because the monomials
used as basis vectors by the Vandermonde approach become indistinguishable.
VANDERMONDE_INTERP_1D needs access to the R8LIB library.
The test code also needs access to the TEST_INTERP library.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
VANDERMONDE_APPROX_1D is available in
a C version and
a C++ version and
a FORTRAN77 version and
a FORTRAN90 version and
a MATLAB 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.
LAGRANGE_APPROX_1D,
a MATLAB library which
defines and evaluates the Lagrange polynomial p(x) of degree m
which approximates a set of nd data points (x(i),y(i)).
PWL_APPROX_1D,
a MATLAB library which
approximates a set of data using a piecewise linear function.
R8LIB,
a MATLAB library which
contains many utility routines using double precision real (R8) arithmetic.
SPLINE,
a MATLAB library which
constructs and evaluates spline interpolants and approximants.
TEST_APPROX,
a MATLAB library which
defines test problems for approximation,
provided as a set of (x,y) data.
VANDERMONDE_APPROX_2D,
a MATLAB library which
finds a polynomial approximant p(x,y) to a function of 2D data by setting up and
solving an overdetermined linear system for the polynomial coefficients
involving the Vandermonde matrix.
VANDERMONDE_INTERP_1D,
a MATLAB library which
finds a polynomial interpolant to a function of 1D data
by setting up and solving a linear system for the polynomial coefficients,
involving the Vandermonde matrix.
Reference:

Kendall Atkinson,
An Introduction to Numerical Analysis,
Prentice Hall, 1989,
ISBN: 0471624896,
LC: QA297.A94.1989.

Philip Davis,
Interpolation and Approximation,
Dover, 1975,
ISBN: 0486624951,
LC: QA221.D33

David Kahaner, Cleve Moler, Steven Nash,
Numerical Methods and Software,
Prentice Hall, 1989,
ISBN: 0136272584,
LC: TA345.K34.
Source Code:

r8mat_transpose_print.m,
prints an R8MAT, transposed.

r8mat_transpose_print_some.m,
prints some of an R8MAT, transposed.

r8poly_value.m,
evaluates a polynomial, using the coefficient ordering that is
the opposite of that which Matlab's polyval() assumes.

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

vandermonde_approx_1d_coef.m,
solves the Vandermonde system of equations for the coefficients of the
polynomial that interpolates a given set of (x,y) data.

vandermonde_approx_1d_matrix.m,
returns the Vandermonde matrix associated with a given set of nodes x.
Examples and Tests:
The test code requires the test_interp library as well. If this library is
available in a separate folder at the same "level" as the vandermonde_interp library,
then a Matlab command such as "addpath ( './test_interp')" will make that library
accessible for a run of the test program.
The code generates some plots of the data and approximants.

p01_data.png,
a plot of the data and piecewise linear interpolant for problem p01;

p01_poly00.png,
a plot of the polynomial interpolant for problem p01, degree 0;

p01_poly01.png,
a plot of the polynomial interpolant for problem p01, degree 1;

p01_poly02.png,
a plot of the polynomial interpolant for problem p01, degree 2;

p01_poly03.png,
a plot of the polynomial interpolant for problem p01, degree 3;

p01_poly04.png,
a plot of the polynomial interpolant for problem p01, degree 4;

p01_poly05.png,
a plot of the polynomial interpolant for problem p01, degree 5;

p01_poly07.png,
a plot of the polynomial interpolant for problem p01, degree 7;

p01_poly09.png,
a plot of the polynomial interpolant for problem p01, degree 9;

p01_poly12.png,
a plot of the polynomial interpolant for problem p01, degree 12;

p02_data.png,
a plot of the data and piecewise linear interpolant for problem p02;

p02_poly00.png,
a plot of the polynomial interpolant for problem p02, degree 0;

p02_poly01.png,
a plot of the polynomial interpolant for problem p02, degree 1;

p02_poly02.png,
a plot of the polynomial interpolant for problem p02, degree 2;

p02_poly03.png,
a plot of the polynomial interpolant for problem p02, degree 3;

p02_poly04.png,
a plot of the polynomial interpolant for problem p02, degree 4;

p02_poly05.png,
a plot of the polynomial interpolant for problem p02, degree 5;

p02_poly07.png,
a plot of the polynomial interpolant for problem p02, degree 7;

p02_poly09.png,
a plot of the polynomial interpolant for problem p02, degree 9;

p02_poly12.png,
a plot of the polynomial interpolant for problem p02, degree 12;

p03_data.png,
a plot of the data and piecewise linear interpolant for problem p03;

p03_poly00.png,
a plot of the polynomial interpolant for problem p03, degree 0;

p03_poly01.png,
a plot of the polynomial interpolant for problem p03, degree 1;

p03_poly02.png,
a plot of the polynomial interpolant for problem p03, degree 2;

p03_poly03.png,
a plot of the polynomial interpolant for problem p03, degree 3;

p03_poly04.png,
a plot of the polynomial interpolant for problem p03, degree 4;

p03_poly05.png,
a plot of the polynomial interpolant for problem p03, degree 5;

p03_poly07.png,
a plot of the polynomial interpolant for problem p03, degree 7;

p03_poly09.png,
a plot of the polynomial interpolant for problem p03, degree 9;

p03_poly12.png,
a plot of the polynomial interpolant for problem p03, degree 12;

p04_data.png,
a plot of the data and piecewise linear interpolant for problem p04;

p04_poly00.png,
a plot of the polynomial interpolant for problem p04, degree 0;

p04_poly01.png,
a plot of the polynomial interpolant for problem p04, degree 1;

p04_poly02.png,
a plot of the polynomial interpolant for problem p04, degree 2;

p04_poly03.png,
a plot of the polynomial interpolant for problem p04, degree 3;

p04_poly04.png,
a plot of the polynomial interpolant for problem p04, degree 4;

p04_poly05.png,
a plot of the polynomial interpolant for problem p04, degree 5;

p04_poly07.png,
a plot of the polynomial interpolant for problem p04, degree 7;

p04_poly09.png,
a plot of the polynomial interpolant for problem p04, degree 9;

p04_poly12.png,
a plot of the polynomial interpolant for problem p04, degree 12;

p05_data.png,
a plot of the data and piecewise linear interpolant for problem p05;

p05_poly00.png,
a plot of the polynomial interpolant for problem p05, degree 0;

p05_poly01.png,
a plot of the polynomial interpolant for problem p05, degree 1;

p05_poly02.png,
a plot of the polynomial interpolant for problem p05, degree 2;

p05_poly03.png,
a plot of the polynomial interpolant for problem p05, degree 3;

p05_poly04.png,
a plot of the polynomial interpolant for problem p05, degree 4;

p05_poly05.png,
a plot of the polynomial interpolant for problem p05, degree 5;

p05_poly07.png,
a plot of the polynomial interpolant for problem p05, degree 7;

p05_poly09.png,
a plot of the polynomial interpolant for problem p05, degree 9;

p05_poly12.png,
a plot of the polynomial interpolant for problem p05, degree 12;

p06_data.png,
a plot of the data and piecewise linear interpolant for problem p06;

p06_poly00.png,
a plot of the polynomial interpolant for problem p06, degree 0;

p06_poly01.png,
a plot of the polynomial interpolant for problem p06, degree 1;

p06_poly02.png,
a plot of the polynomial interpolant for problem p06, degree 2;

p06_poly03.png,
a plot of the polynomial interpolant for problem p06, degree 3;

p06_poly04.png,
a plot of the polynomial interpolant for problem p06, degree 4;

p06_poly05.png,
a plot of the polynomial interpolant for problem p06, degree 5;

p06_poly07.png,
a plot of the polynomial interpolant for problem p06, degree 7;

p06_poly09.png,
a plot of the polynomial interpolant for problem p06, degree 9;

p06_poly12.png,
a plot of the polynomial interpolant for problem p06, degree 12;

p07_data.png,
a plot of the data and piecewise linear interpolant for problem p07;

p07_poly00.png,
a plot of the polynomial interpolant for problem p07, degree 0;

p07_poly01.png,
a plot of the polynomial interpolant for problem p07, degree 1;

p07_poly02.png,
a plot of the polynomial interpolant for problem p07, degree 2;

p07_poly03.png,
a plot of the polynomial interpolant for problem p07, degree 3;

p07_poly04.png,
a plot of the polynomial interpolant for problem p07, degree 4;

p07_poly05.png,
a plot of the polynomial interpolant for problem p07, degree 5;

p07_poly07.png,
a plot of the polynomial interpolant for problem p07, degree 7;

p07_poly09.png,
a plot of the polynomial interpolant for problem p07, degree 9;

p07_poly12.png,
a plot of the polynomial interpolant for problem p07, degree 12;

p08_data.png,
a plot of the data and piecewise linear interpolant for problem p08;

p08_poly00.png,
a plot of the polynomial interpolant for problem p08, degree 0;

p08_poly01.png,
a plot of the polynomial interpolant for problem p08, degree 1;

p08_poly02.png,
a plot of the polynomial interpolant for problem p08, degree 2;

p08_poly03.png,
a plot of the polynomial interpolant for problem p08, degree 3;

p08_poly04.png,
a plot of the polynomial interpolant for problem p08, degree 4;

p08_poly05.png,
a plot of the polynomial interpolant for problem p08, degree 5;

p08_poly07.png,
a plot of the polynomial interpolant for problem p08, degree 7;

p08_poly09.png,
a plot of the polynomial interpolant for problem p08, degree 9;

p08_poly12.png,
a plot of the polynomial interpolant for problem p08, degree 12;
You can go up one level to
the MATLAB source codes.
Last modified on 30 July 2012.