1

从 scipy 我使用 interpolate.splrep 和 interpolate.splev 函数来插入我的数据集。不出所料,如果我尝试在数据集的边缘附近获得一个插值,这不会很好。

我想出了一个解决方法(通过两个附加条目扩展数据集,这些条目与数据集的最后一个“常规”条目具有相同的值;这似乎可行),但我想知道是否应该使用另一个插值函数,或者如果有一个通用的方法来处理这个。

提前致谢!

4

1 回答 1

0

不幸的是,我不熟悉 scipy,但也许这会有所帮助:

我认为,这些是多项式样条函数,因此您实际上可以使用实际多项式在边缘附近插入数据集。这很容易。

假设,我们有一个点数据集,例如 (xi,yi), i=1..n 。从 splerp 函数中,我们可以在点 '2' (df_second') 和 'n-1' (df_before_last) 中找到一阶导数(实际上是有限差分)。然后我们需要两个线性方程组:

a1*x1^2 + b1*x1 + c1 = y1
a1*x2^2 + b1*x2 + c1 = y2
2*a1*x2 + b1 = df_second

a2*xn^2 + b2*xn + c2 = yn
a2*x(n-1)^2 + b2*x(n-1) + c2 = y(n-1)
2*a2*x(n-1) + b2 = df_before_last

求解这个方程,你会得到两个多边形:a1*x^2 + b1*x + c1 和 a2*x^2 + b2*x + c2,它们将被插值并平滑地访问样条函数。

实际上,您可以通过将附加方程放入系统中来提高多项式次数并在第一个点和最后一个点设置插值图形曲率和角度。

于 2009-11-13T12:38:51.500 回答