Python:Numpy函数没有产生正确的结果

时间:2014-04-02 18:36:25

标签: python arrays numpy polynomial-math polynomials

我在使用python / numpy时遇到了关于多项式方程结果的问题。 我已经使用具有相当小的前导系数的多项式来定义函数。 以下是我的代码和等式:

import matplotlib.pyplot as plt
import numpy as np 

def myfunction(X):
    return 9.06043895*10**(-9)*X**6-1.67073053*10**(-6)*X**5 + \
          7.49688511*10**(-5)*X**4 + 7.97984114*10**(-4)*X**3 - \
          6.07927087*10**(-2)*X**2 - 0.415861627*X + 80.62563

Input = np.arange(0, 100, 1)
Output = myfunction(Input)

plt.plot(Input, Output)

这产生以下图:

enter image description here

错误似乎是在数组本身关闭时计算结果Y的方式。 (值与图表匹配,但是正确)

使用WolframAlpha绘制的完全相同的等式的示例: (从上面的文字复制/粘贴减去\并返回)

enter image description here

任何人都可以帮助解决这个问题吗?

我觉得在处理函数时可能会有一些截断,但我觉得这个等式不是 坏...

谢谢大家的时间和希望得到的帮助。

1 个答案:

答案 0 :(得分:4)

这是intfloat问题。你得到整数溢出:

>>> np.int32(100)**6
-727379968
>>> np.float32(100)**6
1000000000000.0

因为np.arange(0, 100, 1)给你整数。

你可以随意使它们漂浮 - 我通常使用np.arange(0, 100, 1.0),但说实话,我更喜欢np.linspace

对于花车,我得到:

corrected curve