我试图找出样条插值法如何scipy.interpolate.interp1d确定拟合/平滑函数的导数。从文档中可以理解,interp1d如果将int(quadratic或cubic)传递给kind关键字,则适合样条曲线。但是,如果我不提供任何派生信息,它如何确定派生是什么?我试图遵循源代码中的函数调用,但这只能使我进入隐秘的spleval函数,该函数似乎只是调用FITPACK。而且我不确定如何从他们的网站中找到关于FITPACK的信息...
1 回答

阿波罗的战车
TA贡献1862条经验 获得超6个赞
没有明确规定结点处的样条导数,它们由连续性/平滑度条件确定。我将以立方情况为例。您给出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-6个方程。需要两个附加方程式;最受欢迎的选择是要求三阶导数在最左边和最右边的内部结点处连续(这称为“非结”条件)。现在我们有了一个大小为4 * n-4的线性系统,可以求解这些系数。
不应将以上内容与Hermite插值法混淆,在Hermite插值法中,必须规定导数以及函数本身的值。这是一个不太常见的任务,据我所知,SciPy没有内置工具。
添加回答
举报
0/150
提交
取消