解决数学问题,并从Python和Wolfram Alpha获得不同的输出
我在9gag上发现了这张图片,我决定编写一个python代码,看看这是不是真的 然而,当我运行下面的python代码时,我得到了与Wolfram Alpha不同的结果解决数学问题,并从Python和Wolfram Alpha获得不同的输出,python,python-2.7,math,wolframalpha,Python,Python 2.7,Math,Wolframalpha,我在9gag上发现了这张图片,我决定编写一个python代码,看看这是不是真的 然而,当我运行下面的python代码时,我得到了与Wolfram Alpha不同的结果 import numpy as np import matplotlib.pyplot as plt def f(x): return (18111/2)*(x**4) - 90555*(x**3) + (633885/2)*(x**2) - 452773*x + 217331 for i in range(0,5
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return (18111/2)*(x**4) - 90555*(x**3) + (633885/2)*(x**2) - 452773*x + 217331
for i in range(0,5):
print f(i)
输出:
217331
0
-7
-40
-129
217016
这是我的Wolfram Alpha查询的链接
请注意,我将等式字符串直接从Python代码复制并粘贴到Wolfram alpha,并且它的解释似乎是正确的。所以我非常怀疑这个错误是否在我的Python代码中。在Python2.x中,
int/int
返回一个int
。(截断小数点以下的数字)
要获得所需的数字,需要使用float
>>> 18111/2.0
9055.5
或者,您可以使用以下方法更改行为:
顺便说一句,从1迭代到5。您需要使用
范围(1,6)
,而不是范围(0,5)
哦,是的,我应该注意到,有太多时间我对Python的数据类型有问题。
>>> 18111/2.0
9055.5
>>> from __future__ import division
>>> 18111 / 2
9055.5
>>> range(0, 5)
[0, 1, 2, 3, 4]
>>> range(1, 6)
[1, 2, 3, 4, 5]