【发布时间】:2019-03-20 08:29:33
【问题描述】:
我在 Python 2.7.15 中定义了一个函数,它接受两个输入 (b,v),但我注意到 f(50,0.1) 产生的结果与 f(50.0,0.1) 的结果非常不同。这是函数:
def f(b,v):
h=b*v/math.sqrt(1-v**2)
def dJ_dp(J,p):
return [J[1],-J[0]+3.0/2*J[0]**2+1/(2*h**2)]
J0 = [0.0000001,1/b]
ps = np.linspace(0,15,50)
Js = odeint(dJ_dp, J0, ps)
us = Js[:,0]
return (ps,1/us)
我需要在f(b,v) 中定义dJ_dp,因为它需要值h。为什么输出如此不同?为什么它们完全不同?
我的假设是在定义 h 时出了点问题,但似乎并非如此。
【问题讨论】:
-
Python 2.7 为实数和整数定义了不同的除法。 Take a look
-
J0 = [0.0000001,1/b]的第二个条目是一个整数除法,如果 b 是一个 int,即它的结果将是 0 而不是 0.02
标签: python floating-point int precision physics