所以我正在为我的数字课程编写一个python程序,我不得不编写一个三次样条程序。因此,我在Numerical methods by Chapra and canale和Numerical 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更精确。
答案 0 :(得分:1)
用于曲线拟合的Scipy函数基于FITPACK。尝试查看有关您正在使用的功能的文档,您将能够看到“参考”章节,其中会出现类似的内容:
[{"productId":"1,"productName:"hammer"},{"productId":"2,"productName:"shovel"},{"productId":"3,"productName:"manure"}]
这些引用特别是从函数“splrep”的fitpack.py来源获取的。如果您需要在算法和interp1D的样条曲线之间进行非常彻底的比较,请转到以下文档:
在定义函数名称后,您会看到名为[source]的链接(所以:scipy.interpolate.interp1D [source])。请记住,这些功能上有很多常规处理程序,因此在导航源时请耐心等待。