擅长:python、mysql、java
<p>您的值的缩放效果很差,正如<a href="http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.lagrange.html" rel="nofollow">^{<cd1>}</a>docstring所说,“警告:这个实现在数值上是不稳定的。”尝试将<code>lagrange</code>应用到“白色”数据(即,将数据移动并缩放为平均值0和标准差1)。例如</p>
<pre><code>xm = np.mean(x_data)
xscale = np.std(x_data)
ym = np.mean(y_data)
yscale = np.std(y_data)
x = (x_data - xm) / xscale
y = (y_data - ym) / yscale
poly = scipy.interpolate.lagrange(x, y)
</code></pre>
<p>(<code>np</code>来自<code>import numpy as np</code>。)</p>
<p>然后要对“原始”(即未缩放)数据使用<code>poly</code>,请在调用<code>poly</code>时对<code>x</code>输入使用相同的转换,并对<code>poly</code>返回的值撤消<code>y</code>转换。E、 g.如果<code>xx</code>是一个值在区间[1900,1980]内的数组:</p>
<pre><code>yy = poly((xx - xm)/xscale)*yscale + ym
</code></pre>
<p>不过,在你花太多时间做这件事之前,我不得不问:
为什么要用拉格朗日插值法?它是一个重要的理论工具,但对于实际的数据分析却不是很好(请参见<a href="http://en.wikipedia.org/wiki/Lagrange_polynomial#Notes" rel="nofollow">http://en.wikipedia.org/wiki/Lagrange_polynomial#Notes</a>;特别注意Runge现象的出现)。你为什么要插入呢?你打算用内插器做什么?如果你有这些问题的答案,你应该把它们作为问题的一部分。</p>