iPython与Matlab - 简单乘法的差异

时间:2014-11-13 19:06:10

标签: matlab ipython

我希望能得到一些帮助。

我在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

谢谢!

1 个答案:

答案 0 :(得分:3)

您的问题是整数除法。在python 2中,将整数除以整数将得到整数结果,因此1/2 == 0。如果您使用0.51.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))