我在使用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)
这产生以下图:
错误似乎是在数组本身关闭时计算结果Y的方式。 (值与图表匹配,但是正确)
使用WolframAlpha绘制的完全相同的等式的示例: (从上面的文字复制/粘贴减去\并返回)
任何人都可以帮助解决这个问题吗?
我觉得在处理函数时可能会有一些截断,但我觉得这个等式不是 坏...
谢谢大家的时间和希望得到的帮助。
答案 0 :(得分:4)
这是int
与float
问题。你得到整数溢出:
>>> np.int32(100)**6
-727379968
>>> np.float32(100)**6
1000000000000.0
因为np.arange(0, 100, 1)
给你整数。
你可以随意使它们漂浮 - 我通常使用np.arange(0, 100, 1.0)
,但说实话,我更喜欢np.linspace
。
对于花车,我得到: