hermite_cubic


hermite_cubic, a C++ code which uses cubic polynomials in the Hermite form.

The Hermite Cubic

The Hermite form of a cubic polynomial defines the polynomial p(x) by specifying two distinct points x1 and x2, and providing values for the following four items:

        f1 = p(x1)
        d1 = p'(x1)
        f2 = p(x2)
        d2 = p'(x2)
      
The locations of the abscissas and the four data values are enough to uniquely define a cubic polynomial, known as the Hermite cubic.

From the Hermite cubic representation, it is possible to determine the standard power series form:

        p(x) = c0 + c1 * x + c2 * x2 + c3 * x3
      

It is possible, given any value of the argument x and the data values that define the Hermite cubic polynomial, to determine the value of p(x), as well as the values of the first, second and third derivatives.

It is possible, given two values of the argument x3 and x4, and the data values that define the Hermite cubic polynomial, to determine the value of the integral of p(x) over the interval [x3,x4].

Hermite Cubic Splines:

A sequence of Hermite cubic polynomials can be used to produce a piecewise cubic Hermite interpolant, if we are given a strictly increasing sequence of n nodes x(1:n), and corresponding data vectors f(1:n) and d(1:n). This is done by defining n-1 cubic Hermite polynomials, with the i-th polynomial defined using the data at nodes x(i) and x(i+1). The resulting function interpolates the value and derivative data, and is continuous and continuously differentiable everywhere, and in particular, at the nodes.

Licensing:

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

Languages:

hermite_cubic is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version.

Related Data and Programs:

BERNSTEIN_POLYNOMIAL, a C++ code which evaluates the Bernstein polynomials, useful for uniform approximation of functions;

CHEBYSHEV, a C++ code which computes the Chebyshev interpolant/approximant to a given function over an interval.

DIVDIF, a C++ code which computes divided difference polynomials from data;

hermite_cubic_test

SPLINE, a C++ code which includes many routines to construct and evaluate spline interpolants and approximants.

TEST_APPROX, a C++ code which defines test problems for approximation, provided as a set of (x,y) data.

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

Reference:

  1. Fred Fritsch, Ralph Carlson,
    Monotone Piecewise Cubic Interpolation,
    SIAM Journal on Numerical Analysis,
    Volume 17, Number 2, April 1980, pages 238-246.

Source Code:


Last modified on 12 March 2020.