SciPy.interpolate.interp1d中哪些派生词用于样条线?

时间:2013-06-24 09:18:38

标签: python scipy interpolation spline

我试图找出scipy.interpolate.interp1d中的样条插值如何决定拟合/平滑函数的导数应该是什么。从documentation开始,我了解如果将interp1d(或intquadratic)传递给cubic关键字,则kind符合样条线

但如果我不提供任何衍生信息,它如何决定衍生品是什么?我试着按照源代码中的函数调用,但这只让我看到了神秘的spleval函数,它似乎只是调用了FITPACK。而且我不确定如何从their website ...

中找到有关FITPACK的信息

1 个答案:

答案 0 :(得分:2)

结点处的样条导数未明确规定,它们由continuity/smoothness conditions确定。我将以立方案为例。您给出n个x值和n个y值。三次样条具有4 *(n-1)个系数,在给定的x值之间的每个(n-1)个间隔上有4个。这些系数由以下条件确定:

  • 样条必须在每个内部结处连续:这是(n-2)个方程式,因为有(n-2)个内部结。我们希望结的左侧和右侧两个部分在结处具有相同的值。
  • 样条曲线的一阶导数必须在每个内部结处连续:这是(n-2)个方程式。
  • 样条的二阶导数必须在每个内部结处连续:这是(n-2)个方程。
  • 样条曲线必须与给定的y值匹配:这是n个方程式。

到目前为止总数是4 * n-4个4 * n-4个未知数的方程。需要另外两个方程式;最受欢迎的选择是要求三阶导数在最左边和最右边的内部结处连续(这称为“非结”状态)。现在我们有一个大小为4 * n-4的线性系统,可以求解系数。

上述内容不应与Hermite interpolation相混淆,{{3}}是规定衍生物价值和函数本身价值的地方。这是一项不太常见的任务,据我所知,SciPy没有内置工具。