我有这个函数,它接受一个x值并返回一个输出y值。
def function(x):
y = math.cos(x**2/2)/(math.log(x+2,2))
return y
当我调用该函数时,我得到:
print function(1)
>> 0.630929753571
但WolframAlpha的x = 1值为0.553693
哪个值正确?
答案 0 :(得分:0)
这是因为您使用的是Python 2,其中/
运算符执行整数除法。这将在Python 3中为您提供正确的答案:
>>> def f(x):
... y = math.cos(x**2/2)/(math.log(x+2,2))
... return y
...
>>> f(1)
0.5536929495121011
在Python 3中,使用//
运算符进行底层划分:
>>> def f(x):
... y = math.cos(x**2//2)/(math.log(x+2,2))
... return y
...
>>> f(1)
0.6309297535714574
>>>
在Python 2中,使用y = math.cos(x**2/ 2.0) / (math.log(x+2,2))
答案 1 :(得分:0)
你将int除以另一个更大的int:1 / 2
,因此得到的余弦为零,因为python 2.7不会将整数除法计算为浮点数。尝试:
def function(x):
y = math.cos(x ** 2 / 2.0) / (math.log(x + 2, 2))
return y
答案 2 :(得分:0)
Python 2除法运算符执行整数除法,除非你告诉它它是一个浮点数。
如果您更改为x ** 2 / 2.0,您将获得正确的答案,例如wolfram alfa。
答案 3 :(得分:0)
当你将整数除以整数时,Python 2将舍入为整数,因此当你除以得到正确的结果时,请使用一个浮点数(即2.0
)
import math
def function(x):
y = math.cos(x**2/2.0)/(math.log(x+2,2))
return y
print function(1)