三次样条插值 Spline 类函数说明(190812)

全自动化学发光项目曲线拟合用三次样条插值库的接口说明(.doc,OLE UTF-16LE 提取,内容很短,是移植库文件时的备忘)。

用法示例(原文代码)

double x0[5] = {1,2,4,5,6};    // 已知数据点
double y0[5] = {1,3,4,2,5};
double x[4]  = {1.5,2.5,3.5,4.5};  // 插值点
double y[4];
double leftBound = 0, RightBound = 0;  // 边界导数
 
Spline sp(x0, y0, 5, GivenSecondOrder, leftBound, RightBound);
// 构造函数时即完成拟合;无公式或公式参数返回,不做求解相关系数的要求
 
sp.MultiPointInterp(x, 4, y);  // 已知 x 正求 y

要点

  • Spline 构造签名:(x数组, y数组, 点数, 边界条件类型枚举, 左边界值, 右边界值);边界类型示例 GivenSecondOrder(给定二阶导边界),leftBound/RightBound 传 0 即自然边界。
  • 拟合即构造:对象构造完成拟合,不暴露样条系数——只支持求值,不能提取系数,这点在移植/复用时要注意(无法把拟合结果导出为公式)。
  • 反求(已知 y 求 x)无直接公式,原文给出两条思路:
    1. 调换 X/Y 轴坐标,用正求公式求解(要求该段单调);
    2. 寻找逼近方法(迭代)。
  • 化学发光标准曲线场景中正求(浓度→RLU)不常用、反求(RLU→浓度)才是主用途,反求无原生支持是该库的主要短板。

关联