我希望能得到一些帮助。
我在Matlab中运行一个简单的脚本:
Ao=1.476E21
XN2=0.6
XO2=0.03
P=1 %atm
T=2000%K
Ru=82.057 %atm*cm^3/mol-K
dXNO_dt=Ao*XN2*(XO2^(1/2))*exp(-67520/T)*((P/(Ru*T))^(1/2))
产生正确的(数据确认的)答案:
dXNO_dt =
824.9806
然而,当我切换到iPython并使用类似的脚本时:
from numpy import *
Ao=1.476E21
XN2=0.6
XO2=0.03
P=1 #atm
T=2000#K
Ru=82.057 #atm*cm^3/mol-K
dXNO_dt=Ao*XN2*(XO2**(1/2))*exp(-67520/T)*((P/(Ru*T))**(1/2))
print 'dXNO_dt = {0}'.format(dXNO_dt)
我得到了令人困惑的答案:
>>> dXNO_dt = 1517837.30697
有谁知道为什么会这样?在找出像这样的更深层次的问题时,我是一个巨大的菜鸟。
这是在Python 2.7.8,IPython 2.3.1
中谢谢!
答案 0 :(得分:3)
您的问题是整数除法。在python 2中,将整数除以整数将得到整数结果,因此1/2 == 0
。如果您使用0.5
或1.0/2.0
作为指数,那么您将获得正确的答案。同样,您需要使用-67520.0/T
。
以下给出了824.98055222082394
的结果dXNO_dt=Ao*XN2*(XO2**(1.0/2.0))*exp(-67520.0/T)*((P/(Ru*T))**(1.0/2.0))