代码之家  ›  专栏  ›  技术社区  ›  Dzz

数据集端点的数据点插值

  •  1
  • Dzz  · 技术社区  · 15 年前

    在scipy中,我使用interpolate.splrep和interpolate.splev函数来获取interpolate我的数据集。不出所料,如果我尝试在数据集的边缘附近获取插值值,这就不会很好地工作。

    我想出了一个解决办法(将数据集扩展为两个额外的条目,这两个条目的值与数据集的最后一个“常规”条目的值相同;这似乎是可行的),但我想知道是应该使用另一个插值函数,还是有一种常见的方法来处理这个问题。

    1 回复  |  直到 15 年前
        1
  •  0
  •   akalenuk    15 年前

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

    让我们假设,我们有一个数据集的点(如席,彝),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,这两个多边形是插值的,并且可以很容易地访问样条函数。

    实际上,只需在系统中加入附加方程,就可以提高多项式的阶数,并在第一点和最后一点设置插值图形的曲率和角度。