从scipy我使用interpolate.splrep和interpolate.splev函数来获取插值我的数据集。不出所料,如果我试图在数据集的边缘附近获得插值,这不会很好。
我提出了一个解决方法(通过两个额外的条目扩展数据集,这些条目与数据集的最后一个“常规”条目具有相同的值;这似乎有效),但我想知道是否我应该使用另一个插值函数,或者如果有一种常用的方法来解决这个问题。
提前致谢!
答案 0 :(得分: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,它们将被内插并且可以平滑地访问样条函数。
实际上,您可以通过在系统中添加其他方程来提高多项式度数并在第一个和最后一个点设置插值图形曲率和角度。