2015-11-08 24 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。