如何保证三次插值是单调的?

时间:2014-04-02 22:31:49

标签: interpolation mathematical-optimization cubic

一般情况下:给定一组本身单调的任意数据,如何计算额外的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](N / A)

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

任何人都知道怎么做?

1 个答案:

答案 0 :(得分:0)

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

  1. 将绘图翻译为关于原点的对称。 (第3点变为[0,0])

  2. 找到抛物线段(恒定加速度),它将第1点的斜率在[x,0]处平坦。

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

    < / LI>
  4. 如果x的符号相反或为零,则默认插值已经是单调的。无需额外积分。

  5. 一旦确定了抛物线段,在任何一种情况下,每侧增加一个点以将它们转换为立方段。 (恒定加速斜坡加速度)