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

neo*_*ern 6 python interpolation scipy

我正在尝试在SciPy interp1d函数的边界设置行为,根据文档应该是可能的:

Behavior at the boundary can be specified at instantiation time.
Run Code Online (Sandbox Code Playgroud)

但我还没有找到任何进一步的信息. interp1d文件没有提到这一切.

那么:我该如何定义行为呢?

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



编辑:实例(假设之间的数据点x=0x=n和三次插值)

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

flat:我可以要求函数变平,换句话说,推导为零.

f'(0)  = f'(n)  = 0
f''(0) = f''(n) = 0
Run Code Online (Sandbox Code Playgroud)

循环:在某些行之间

f'(0)  = f'(n)
f''(0) = f''(n)
Run Code Online (Sandbox Code Playgroud)

因此,开始和结束具有相同的"斜率".


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

f'(0)  = ...
f'(n)  = ...
f''(0) = ...
f''(n) = ...
Run Code Online (Sandbox Code Playgroud)

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

rth*_*rth 3

我认为文档中的这句话措辞很糟糕,请忽略它。

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

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

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