test_approx


test_approx, a Fortran77 code which provides sets of test data for approximation algorithms.

The code contains a number of vectors of data (X(1:N),Y(1:N)) for which no underlying functional relationship is given.

The task of interpolation software is to find, from some given class of functions, the function G(X) which exactly matches the known data values. That is, G(X(1:N)) = Y(1:N).

The task of approximation software is to find, from some given class of functions, the function H(X) for which some approximation error is minimized. There are many forms of error measurement. For instance, the error might simply be the sum of the differences of the function and the data at the data abscissas:

l1(X) = sum ( 1 <= I <= N ) abs ( H(X(I)) - Y(I) )
or the square root of the sum of squares
l2(X) = sqrt ( sum ( 1 <= I <= N ) ( H(X(I)) - Y(I) )^2 )
or the maximum pointwise error:
l_inf(X) = max ( abs ( H(X(I)) - Y(I) ) )
In cases where a functional form is given, the error might be measured in terms of the integral of the absolute value of the difference over some interval:
L1(X,A,B) = integral ( A <= X <= B ) abs ( H(X) - F(X) ) dx
and so on.

The problems available include:

  1. p01_data.png: DeBoor example, Mars position data
  2. p02_data.png: DeBoor example, roughly linear data
  3. p03_data.png: The pulse data, 0 0 0 0 0 1 0 0 0 0 0;
  4. p04_data.png: The jump data, 0 0 0 0 0 1/2 1 1 1 1 1;
  5. p05_data.png: DeBoor's Titanium Property data;
  6. p06_data.png: The Sawtooth data;
  7. p07_data.png: Concavity test data;
  8. p08_data.png: Extrapolation test data;
  9. p09_data.png: Sunspot data, 1700-1960;
  10. p10_data.png: 100 samples of y=2+5x+10*N(0,1), where N(0,1) is a random normal value with 0 mean and unit variance;

Licensing:

The computer code and data files described and made available on this web page are distributed under the MIT license

Languages:

test_approx is available in a C version and a C++ version and a Fortran90 version and a MATLAB version and an Octave version.

Related Data and Programs:

test_approx_test

bernstein_polynomial, a Fortran77 library which evaluates the Bernstein polynomials, useful for uniform approximation of functions;

CHEBYSHEV, a Fortran77 library which computes the Chebyshev interpolant/approximant to a given function over an interval.

DIVDIF, a Fortran77 library which includes many routines to construct and evaluate divided difference interpolants.

LAGRANGE_APPROX_1D, a Fortran77 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)).

PPPACK, a Fortran77 library which implements Carl de Boor's piecewise polynomial functions, including, particularly, cubic splines.

PWL_APPROX_1D, a Fortran77 library which approximates a set of data using a piecewise linear function.

SPLINE, a Fortran77 library which includes many routines to construct and evaluate spline interpolants and approximants.

TEST_APPROX, a dataset directory which contains sets of data (x,y) for which an approximating formula is desired.

TEST_INTERP_1D, a Fortran77 library which defines test problems for interpolation of data y(x), depending on a 1D argument.

TOMS446, a Fortran77 library which manipulates Chebyshev series for interpolation and approximation;
this is a version of ACM TOMS algorithm 446, by Roger Broucke.

VANDERMONDE_APPROX_1D, a Fortran77 library which finds a polynomial approximant to data of a 1D argument by setting up and solving an overdetermined linear system for the polynomial coefficients, involving the Vandermonde matrix.

Reference:

  1. Samuel Conte, Carl deBoor,
    Elementary Numerical Analysis,
    Second Edition,
    McGraw Hill, 1972,
    ISBN: 07-012446-4,
    LC: QA297.C65.
  2. Carl deBoor,
    A Practical Guide to Splines,
    Springer, 2001,
    ISBN: 0387953663,
    LC: QA1.A647.v27.
  3. Max Waldmeier,
    The Sunspot-Activity in the Years 1610-1960,
    Shulthess, 1961,
    LC: QB525.W34.

Source Code:


Last revised on 09 December 2023.