我试图找出scipy.interpolate.interp1d
中的样条插值如何决定拟合/平滑函数的导数应该是什么。从documentation开始,我了解如果将interp1d
(或int
或quadratic
)传递给cubic
关键字,则kind
符合样条线
但如果我不提供任何衍生信息,它如何决定衍生品是什么?我试着按照源代码中的函数调用,但这只让我看到了神秘的spleval
函数,它似乎只是调用了FITPACK。而且我不确定如何从their website ...
答案 0 :(得分:2)
结点处的样条导数未明确规定,它们由continuity/smoothness conditions确定。我将以立方案为例。您给出n个x值和n个y值。三次样条具有4 *(n-1)个系数,在给定的x值之间的每个(n-1)个间隔上有4个。这些系数由以下条件确定:
到目前为止总数是4 * n-4个4 * n-4个未知数的方程。需要另外两个方程式;最受欢迎的选择是要求三阶导数在最左边和最右边的内部结处连续(这称为“非结”状态)。现在我们有一个大小为4 * n-4的线性系统,可以求解系数。
上述内容不应与Hermite interpolation相混淆,{{3}}是规定衍生物价值和函数本身价值的地方。这是一项不太常见的任务,据我所知,SciPy没有内置工具。