天软金融分析.NET函数大全 > TSL函数 > 数学函数 > 数值计算 > 插值 > interp_unit

spline    

简述
三次样条插值
算法说明:
设S(x)满足样本点要求,则只需在每个子区间[xj,xj+1]上确定1个三次多项式,假设为:

Sj(x) = ajx3 + bjx2 + cjx + d

假设有n个点,需要n-1条线描述,每条线四个未知数,则未知数个数为4(n-1)。显然中间(n-2)个点具有4个约束条件:


S(xj) = f(xj)


S'(xj+0) = f'(xj-0)


S''(xj+0) = f''(xj-0)


S'''(xj+0) = f'''(xj-0)

两端断点存在约束 S(xi) = f(xi),则约束方程有4(n-2) + 2 = 4(n-1)-2,所以,总的未知数个数比方程个数多两个。所以需要额外的两个约束,于是就有了三种边界条件的插值算法。
第 1 类边界条件:给定端点处的一阶导数值


S'(x1) = y1' ,S'(xn) = yn'
第 2 类边界条件:给定端点处的一阶导数值


S''(x1) = y1'' ,S''(xn) = yn''
第 3 类边界条件是周期性条件,如果y=f(x)是以[xj, xj+1]为周期的函数,于是S(x)在端点处满足条件

S'(x1+0) = S'(xn- 0) ,S''(x1+0) = S''(xn- 0)
定义
spline(x1;y1;xx1:array):array
参数
名称类型说明
x1array 一维数字数组 横坐标序列
y1array 一维数字数组 纵坐标序列
xx1array 实数或一维数字数组 插值
返回array实数或一维数字数组,插值序列。
  • 范例

      x:=array(5,1,19,8);
      y:=array(2,3,1,7);
      xx:=array(4,12);
      return spline(x,y,xx);
    //返回:array(1.1407,13.9444)
相关