2

我试图找出样条插值如何scipy.interpolate.interp1d决定拟合/平滑函数的导数应该是什么。从文档中,我了解到如果将(或或)传递给关键字,interp1d则适合样条曲线。intquadraticcubickind

但如果我不提供任何衍生信息,它如何确定衍生信息是什么?我试图遵循源代码中的函数调用,但这只会让我看到神秘的spleval函数,它似乎只是调用了 FITPACK。而且我不确定如何从他们的网站上找到有关 FITPACK 的信息...

4

1 回答 1

2

节点处的样条导数没有明确规定,它们由连续性/平滑性条件决定。我将以立方体为例。你给出 n 个 x 值和 n 个 y 值。三次样条具有 4*(n-1) 个系数,在给定 x 值之间的每个 (n-1) 个间隔上都有 4 个。这些系数由以下条件确定:

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

到目前为止,总共有 4*n-6 个方程,用于 4*n-4 个未知数。需要两个额外的方程;最流行的选择是要求三阶导数在最左侧和最右侧的内部结处是连续的(这称为“非结”条件)。现在我们有一个大小为 4*n-4 的线性系统,可以求解系数。


上述内容不应与Hermite 插值混淆,后者规定了导数以及函数本身的值。这是一个不太常见的任务,据我所知,SciPy 没有内置工具。

于 2017-12-20T01:35:20.163 回答