如何为SciPy的interp1d指定边界行为

时间:2015-04-16 22:13:16

标签: python scipy interpolation

我试图在SciPy interp1d函数的边界设置行为,according to the documentation应该是可能的:

Behavior at the boundary can be specified at instantiation time.

但我没有找到任何有关此事的进一步资料。 interp1d documentation并未提及所有内容。

所以:我如何定义行为?

好奇心:它使用的默认边界行为是什么?



修改示例(假设x=0x=n之间的数据点和三次插值)

我知道至少有三种类型的边界行为,我希望能够指定:

flat:我可以要求函数变平,换句话说,派生为零。

f'(0)  = f'(n)  = 0
f''(0) = f''(n) = 0

cyclic:

之类的内容
f'(0)  = f'(n)
f''(0) = f''(n)

因此,开头和结尾都有相同的"斜率"。


手册:或者我可以手动提供衍生品的值......

f'(0)  = ...
f'(n)  = ...
f''(0) = ...
f''(n) = ...

虽然可能不是同时针对所有四个人。

1 个答案:

答案 0 :(得分:3)

我认为文件中的句子措辞严厉,只是忽略它。

目前,interp1d函数不允许指定边界行为,

  • 对于线性插值,我们根本就没有选择它。
  • 对于高阶插值interp1d使用样条构造函数scipy.interpolate.splmake和默认参数kind='smoothest',所以再次没有选择那里的边界行为。

另一方面,您可能希望查看scipy.interpolate.PiecewisePolynomial,它表示具有分段多项式的曲线,并且能够指定导数(尽管对于所有节点而不仅仅是在边界处)。 / p>