数学优化 - 如何保证三次插值是单调的



一般来说:给定一组本身是单调的任意数据集,我应该如何计算额外的n个点来强制非单调三次插值(我必须使用,别无选择)是单调的?

特别适合我:我有一个项目需要计算两个伺服器之间的关系。 由于机器设计,伺服系统不应备份。 我希望我能发布一张图片,但我刚刚注册,还没有声誉。 具有代表性的要点如下:

0: [0, 0](直线到 1)

1: [37.5, 45](立方曲线为 2)

2: [?, ?] (三次曲线到 3)

3: [180, 60](立方曲线至4)

4: [?, ?] (三次曲线为 5)

5: [322.5, 75](直线到6)

6: [360, 120] (不适用)

我想要的行为以点 0、1、3、5 和 6 为特征。 点 0 是固定的;其余的在运行时计算,并保证单调增加。 整个图保证围绕点 3 对称。 需要添加第 2 点和第 4 点,以便我必须使用的第三方线性/三次插值器产生尽可能平滑的单调曲线。 (最小二阶导数)

有人知道该怎么做吗?

为了节省时间,我自己推导出了一个解决方案:

  1. 将图转换为围绕原点对称的图。 (第 3 点变为 [0, 0])

  2. 求抛物线段(恒定加速度),该段使点 1 处的斜率在 [x, 0] 处趋于平坦。

  3. 如果 x 与点 1 具有相同的符号,则点 2 = [x, 0],
  4. 点 4 = [-x, 0],并且中间的段应该是线性的。

  5. 如果 x 具有相反的符号或为零,则默认插值已经是单调的。 无需额外积分。

  6. 确定抛物线段后,无论哪种情况,每条边再添加一个点以将它们转换为三次线段。 (恒定加速度到斜坡加速度)

最新更新