我正在尝试设置SciPy的interp1d
函数的边界行为,根据文档,这应该是可能的:
Behavior at the boundary can be specified at instantiation time.
但是我没有找到关于这个的更多信息。 interp1d文档中没有提到它。 那么:我该如何定义行为呢? 顺便问一下:它使用的默认边界行为是什么?
编辑:示例(假设数据点在x=0
和x=n
之间,且采用三次插值)
我知道至少有三种边界行为类型,我希望能够指定:
平坦:我可以要求函数趋于平坦,换句话说,导数为零。
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) = ...
尽管可能不是同时适用于所有四个。
x=0
和x=n
之间且进行三次插值,我可以要求函数平坦化,换句话说,导数为零(即f'(0)=f'(n)=0
和f''(0)=f''(n)=0
)。或者我可以要求类似于f'(0)=f'(n)
和f''(0)=f''(n)
(开头和结尾具有相同的“斜率”)。或者我可以手动提供导数的值... - neo post modernscipy.interpolate.splmake
上找不到任何资料(除了人们抱怨文档不见了)。我会接受你的答案,因为显然在 SciPy 中不可能实现我所要求的内容,并且我稍后会发布我的解决方法/自己的实现。 - neo post modernsplmake
并不是为了向用户公开而设计的,因此缺少文档。源代码可以在https://github.com/scipy/scipy/blob/master/scipy/interpolate/interpolate.py#L2116找到。 - rth