非等距点的三次插值

3

我试图创建一组点的插值。

我有一些坐标点(ti, xi),其中ti是时间戳,xi是相应的值。我想创建一个通过这些点并允许我找到在区间内与任意t对应的x值的函数。

我想要使用三阶插值来进行插值。我见过类似于catmull-rom插值的东西,但它只在点xi等距离时有效。

例如,在这里http://www.mvps.org/directx/articles/catmull/http://www.cs.cmu.edu/~462/projects/assn2/assn2/catmullRom.pdf中可以发现时间戳点是等距的。

是否有方法可以应用于非规则点的三次插值?


你有考虑过使用三次样条插值吗? - Alexandre C.
2个回答

1

只要它们都不同,参数的间距不均是没有问题的。正如您可能知道的那样,如果您有四个不同的时间t[i],则存在一个相应值x[i]的唯一多项式插值器,其次数最多为3(三次或更低阶)。

计算插值器有两种主要方法:牛顿差商法拉格朗日插值法

请记住,仅找到多项式并不是重点,而是在区间内的另一个时间上评估它,因此需要考虑一些编程权衡。

如果时间点 t [i] 固定,但值 x[i] 反复更改,则最好使用拉格朗日插值法。它基本上构造了四个三次多项式,在其中三个点处取根并在剩余点处给出归一化值1。一旦有了这四个多项式,插值值 x[i] 就只是取相应的线性组合。拉格朗日插值法在区间边缘处会受到 Runge现象 的影响。
然而,如果时刻 t[i] 不断变化,或者您正在为相同 t[i],x[i] 数据的许多中间点评估插值多项式,则 牛顿插值法 可能更好。如果准确性很重要,可以改变时间点 t[i] 在差商表中出现的顺序,以便评估局限于最接近所需值的中间时间周围的时间。

在网上很容易找到牛顿插值法的示例代码,比如C ++,Python或Java。


0

一种方法可能是通过这些点拟合最小二乘立方体。我发现这种方法在这里即使只有少量的点也很稳健和实用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接