2015-05-21 161 views
3

realmax我的機器上是:有沒有什麼辦法可以在MATLAB中增加'realmax'?

1.7977e + 308

我知道我必須寫我的代碼的方式,以避免長時間整數計算,但有什麼辦法,以增加限制?
我的意思是這樣的GMP庫用C

+1

我不認爲你可以增加。你可以做的是使用['vpa'](http://es.mathworks.com/help/symbolic/vpa.html)(或者,如果可能的話,修改你的代碼以避免溢出) –

+0

同意Luis Mendo。順便說一句,非常漂亮的顯示圖片! – rayryeng

回答

5

您可能會發現vpa可變精度運算)有所幫助:

R = vpa(A)使用可變精度運算(VPA)至A每個元素來計算至少d準確性的十進制數字,其中d是當前的設置digits

R = vpa(A,d)至少使用d重要(非零)數字,而不是當前設置digits

下面是一個例子如何使用它:

>> x = vpa('10^500/20') 
ans = 
5.0e498 

需要注意的是:

  • 輸出x象徵sym)型。當然,你不應該將其轉換爲double,因爲它會超過realmax

    >> double(x) 
    ans = 
        Inf 
    
  • 使用字符串輸入爲了避免評估大的輸入值double。例如,因爲10^500作爲double評價,給予inf,和然後被用作輸入到vpa這不起作用

    >> vpa(10^500/20) 
    ans = 
    Inf 
    

+1

如果'vpa'不可用,[Multiple Precision Toolbox](http://www.mathworks.com/matlabcentral/fileexchange/6446-multiple-precision-toolbox-for-matlab)提供了一個替代方案。 – Daniel

相關問題