scipy.interpolate中interp1d函数使用了什么算法

时间:2016-03-18 15:31:03

标签: python scipy cubic-spline

所以我正在为我的数字课程编写一个python程序,我不得不编写一个三次样条程序。因此,我在Numerical methods by Chapra and canaleNumerical mathematics by chenny and kincaid等书籍中实现了三次样条曲线的公式。

所以我的数据是

0,-5

使用此数据并应用三次样条线,我得到x=[1.0,3.0,4.0,7.0] y=[1.5,4.5,9.0,25.5] x=1.5

虽然使用相同的数据但使用scipy函数给出了:

y=1.79122340426

那么,为什么结果有所不同呢?很明显,他们没有使用相同的公式。 什么是该scipy函数中使用的三次样条公式?它是一种天然的三次样条公式还是改进了? 注意:值1.2656更精确。

1 个答案:

答案 0 :(得分:1)

编辑:@ ev-br在这个答案的评论中提供了一个重要的修正我的答案。实际上interp1D样条曲线不是基于FITPACK的。检查@ ev-br。

提供的链接的注释

用于曲线拟合的Scipy函数基于FITPACK。尝试查看有关您正在使用的功能的文档,您将能够看到“参考”章节,其中会出现类似的内容:

[{"productId":"1,"productName:"hammer"},{"productId":"2,"productName:"shovel"},{"productId":"3,"productName:"manure"}]

这些引用特别是从函数“splrep”的fitpack.py来源获取的。如果您需要在算法和interp1D的样条曲线之间进行非常彻底的比较,请转到以下文档:

scipy.interpolate.interp1d

在定义函数名称后,您会看到名为[source]的链接(所以:scipy.interpolate.interp1D [source])。请记住,这些功能上有很多常规处理程序,因此在导航源时请耐心等待。