如何为 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=0
和 x=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
,它表示具有分段多项式的曲线并且能够指定导数(尽管对于所有节点,而不仅仅是在边界处) .
我正在尝试为 SciPy 的 interp1d
函数设置边界处的行为,according to the documentation 应该是可能的:
Behavior at the boundary can be specified at instantiation time.
但我还没有找到任何关于此的进一步信息。 这个interp1d documentation就不多说了
那么:如何定义行为?
侧面好奇:它使用的默认边界行为是什么?
编辑: 示例(假设 x=0
和 x=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
,它表示具有分段多项式的曲线并且能够指定导数(尽管对于所有节点,而不仅仅是在边界处) .