%
这是MATLAB里面的pchip.m文件,这里把它的注释改写成汉语,以便彻底弄懂它是怎么编写的。
% 主要是想弄清楚它是怎么计算在节点处的导数的。
% 寇文红2007年10月8日凌晨于北京大学畅春新园。
function v =
pchip(x,y,xx)
%输入:n个插值节点的纵坐标向量x;横坐标向量y;插值点xx。
%输出:分段三次Hermite插值结果。
% PCHIP Piecewise Cubic Hermite Interpolating Polynomial.
% PP =
PCHIP(X,Y)为X处的值Y提供了一种特定的保形分段三次厄尔米特插值(shape-preserving piecewise
cubic Hermite interpolant)
% 的分段多项式形式,在后面的PPVAL和样条功能UNMKPP(spline utility
UNMKPP)将用到这个函数。
% X必须是个向量。
% 如果Y是个向量,则Y的第j个元素Y(j)被取为和X的第j个元素X(j)匹配的值,因此Y和X的长度必须一样。
% 如果Y是一个矩阵,或者N维数组,则Y(:,...,:,j)被取为和X(j)相匹配的值,因此Y的最后一维必须等于length(X).
% YY = PCHIP(X,Y,XX)和YY =
PPVAL(PCHIP(X,Y),XX)是一样的,因此在YY中给出了在XX处的插值。
% PCHIP插值函数p(x)满足:
% 在每个子区间X(k) <= x <=
X(k+1),p(x)