我试图使用scipy.interpolate.lagrange
插值以下数据,它是8度的:
x_data = [1900., 1910., 1920., 1930., 1940., 1950., 1960., 1970., 1980.]
y_data = [76212168., 92228496., 106021537., 123202624., 132164569., 151325798., 179323175., 203302031., 226542199.]
使用python代码:poly = scipy.interpolate.lagrange(x_data, y_data)
但是输出看起来不正确,因为即使是(x_data[i], y_data[i])
对都不在我从scipy.interpolate.lagrange
调用获得的“poly”上。
有人能给点提示或建议吗? 非常感谢。
您的值的缩放效果很差,正如^{} docstring所说,“警告:这个实现在数值上是不稳定的。”尝试将
lagrange
应用到“白色”数据(即,将数据移动并缩放为平均值0和标准差1)。例如(
np
来自import numpy as np
。)然后要对“原始”(即未缩放)数据使用
poly
,请在调用poly
时对x
输入使用相同的转换,并对poly
返回的值撤消y
转换。E、 g.如果xx
是一个值在区间[1900,1980]内的数组:不过,在你花太多时间做这件事之前,我不得不问: 为什么要用拉格朗日插值法?它是一个重要的理论工具,但对于实际的数据分析却不是很好(请参见http://en.wikipedia.org/wiki/Lagrange_polynomial#Notes;特别注意Runge现象的出现)。你为什么要插入呢?你打算用内插器做什么?如果你有这些问题的答案,你应该把它们作为问题的一部分。
Here创建自己的函数a lagrange插值。也许你在利用她
相关问题 更多 >
编程相关推荐