具有非等距点的三次插值



我正在尝试创建一个点列表的插值。

我有一些坐标点(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。

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

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

插值的计算主要有两种方法,牛顿差分法和拉格朗日插值法。

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新