2015-11-08 89 views
-5

我目前处于亏损状态,我有一个对大多数参数都适用的程序,但对于某些参数,它会引发NaN异常。这个问题似乎在于计算略大于1的值。我有一个类似于f(x,t)的函数,对于x的大值,f随着t快速增加并且没有问题,但是对于小值xf随着t增加非常缓慢。对于x的值小时不工作的时候会是这样的(数组表示离散时间步骤):NaN的Python语言原因(除以零除外)

1.0 
1.0 
1.0 
NaN 

我不明白,NaN被如何返回,明确不倾向于客场值无穷大,并略大于1.是否有一些数据类型的问题可能会引发此异常?

对于较大的X行为值可能是这样的:

1.0 
1.000000000000074 
1.000000000000486 
1.000000000000888 
与完全没有问题

等。

+1

我们必须看到你的代码,以便能够发表评论...... –

+0

没有什么,我们没有看到实际的代码可以说。顺便说一句:数据类型本身没有问题。唯一可能出错的是你使用它们的方式。 – freakish

+0

请分享您的代码。 –

回答

0

PEP 754具体指示PositiveInfinty/PositiveInfinity将返回NaN。 (以及有关使用PosInf = 1e300000作为PositiveInfinity时的值,而是也会谈指出这并不是便携式或非难看)

The wiki page for IEEE 754 NaN's指示下列附加的例子:用NaN的截至

  • 操作至少一个操作数。
  • 不定形
    • 的区划0/0和±∞/±∞(如在你的问题和分别如上所述)
    • 的乘法0×±∞和±∞×0
    • 加料∞+(-∞),(-∞)+∞和等效减法
    • 标准具有用于权力替代功能:
      • 标准pow函数和整数指数pown函数将0^0,1∞和∞0定义为1.(注意,我期望使用的0 ** 0或至少类似于python 2.7中的pow返回1)
      • powr函数定义所有三个不确定的形式作为无效操作,因此返回NaN。
      • 复杂的结果,例如实时操作:这对所有我试过了,用math.sqrt,math.log的那些,而是math.asin扔数学域误差在Python回访NAN)]
        • 负数的平方根。
        • 负数的对数
        • 数字的反正弦或余弦小于-1或大于+1。