2014-11-05 52 views
0

我有一個問題,在較長的一段時間,我會非常感激,如果你能幫助我莫名其妙...在MATLAB大爭論的指數函數

我在MATLAB代碼(版本R2012a)在這裏我使用MATLAB的函數exp來計算一些指數函數。這意味着,我有這樣的事情:

y = exp(x); 

然而,當該「x」爲大於某個數時,結果(「Y」)放大是無窮大;當「X」大於一定數值越小,結果爲0。MathWorks公司的網站上說:

數值異常可能發生,當一個浮點參數的實 部分的絕對值x很大。如果(x)< -7.4 * 10^8, 則exp(x)可以返回截斷結果0.0(針對 下溢的保護)。如果ℜ(x)> 7.4 * 10^8,那麼exp(x)可能返回無窮大的浮點等效RD_INF。

我的問題很明顯 - 我的「x」非常大,所以我收到無窮大和零而不是我需要的結果。我的問題是 - 我如何得到真正的結果?預先感謝您的幫助!

回答

0

任何語言的變量都以一定量的字節存儲在計算機的內存中。用於保存變量類型的字節越多,變量可以保存的結果就越精確。如果您使用整數,最大的類型使用64個字節,並且是uint64。這是一個無符號整數(意味着它只能是正數),範圍可以從0到18,446,744,073,709,551,615。如果您需要小數點,請嘗試使用vpa。

2

使用vpa用字符串輸入:

>> exp(1000) 
ans = 
    Inf 

>> vpa('exp(1000)') 
ans = 
1.9700711140170469938888793522433*10^434 

vpa結果是sym類的。

+0

vpa似乎是我一直在尋找的東西......謝謝! – hejnevim 2014-11-08 19:14:28