# matlab实现分段Hermite三次插值

matlab实现分段Hermite三次插值

## Piecewise Hermite Cubic Interpolation

Piecewise Hermite cubic interpolation between 2 points knowing derivative values

Syntax: y=p3hermite(x,pointx,pointy,yprime,plt)

Where

pointx = data points of the independent variable

(The points do not have to be equally spaced)

pointy = data points of the dependent variable. pointy is the value of

the function at pointx

yprime = data points of the dependent variable's derivative. yprime is the

derivative of the function at pointx

x = an arbitrary vector that will be interpolated

plt = If plt is a number greater than 0 it will plot the interpolation

employing the number in plt as handle for the figure

-This function returns the piecewise interpolation "y" of a vector "x".

The algorithm employs two adjacent points (from pointx) and interpolates

with a Hermite cubic polynomial using the function values and the corresponding derivatives.

-pointx, pointy, and yprime must be vectors with the same number of elements.

"x" and "y" have the same number of elements.

Written by Juan Camilo Medina 2011

Example:

Suppose you have the values of a function "y(x)" at the points xi={0,4,9},

those are yi={2,-2,sqrt(2)} respectively. You also know the values of the

derivative of y(x) at the same points (pointx) yi'=[0,0,-pi/(2*sqrt(2))] respectively.

You want to interpolate within those values with an arbitrary vector "x"

using piecewise cubic Hermite polynomials

Thus:

pointx=[0,4,9];

pointy=[2,-2,sqrt(2)]; %function values at pointx

yprime=[0,0,-pi/(2*sqrt(2))]; %derivative of the function at pointx

x=0:0.01:pointx(end); % arbitrary vector to be interpolated

y=p3hermite(x,pointx,pointy,yprime,2);

y_ex=2*cos(pi/4*x); % exact value (y corresponds to y=2*cos(pi/4*x))

plot(x,y_ex,'--k'); axis tight; % plots exact solution for comparison

legend('Interpolation Points','Hermite Interpolation','Exact Value','Location','Southeast')

Written by Juan Camilo Medina - The University of Notre Dame

p3hermite.zip (2.15KB)

p3hermite.m