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

有什么方法可以应用非规则点的三次插值?

4

2 回答 2

1

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

计算插值有两种主要方法,牛顿除法拉格朗日插值法

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

如果时间t[i]是固定的,但值x[i]是反复更改的,那么使用拉格朗日方法可能会很好。它基本上构造了四个三次多项式,它们在四个点中的三个处取根,并在剩余点处给出归一化值 1。一旦你有了这四个多项式,对这些值进行插值x[i]只需对它们进行相应的线性组合即可。拉格朗日方法在区间边缘存在龙格现象

但是,如果时间t[i]不断变化,或者您正在评估相同t[i], x[i]数据的多个中间点的插值多项​​式,那么牛顿除法可能会更好。如果准确性很重要,可以改变时间t[i]出现在除差表中的顺序,以便评估定位在最接近需要该值的中间时间的时间附近。

在 Web 上不难找到牛顿除差法的示例代码,例如 C++、Python 或 Java。

于 2011-06-06T14:13:07.680 回答
0

一种方法可能是通过点拟合最小二乘三次。我发现这里的方法是健壮和实用的,即使点数很少。

于 2011-06-07T00:26:24.733 回答