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

How to specify boundary behavior for SciPy's interp1d

我正在尝试为 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) = ...

虽然他们四个可能不会同时出现。

我认为文档中的句子措辞不当,请忽略它。

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

  • 对于线性插值,我们别无选择。
  • 对于高阶插值 interp1d 使用带有默认参数 kind='smoothest' 的样条构造函数 scipy.interpolate.splmake,因此在边界行为上也没有选择。

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