2015-05-21 2 views
3

realmax на моей машине:Есть ли способ увеличить «realmax» в MATLAB?

1.7977e + 308

Я знаю, что я должен написать свой код таким образом, чтобы избежать длинных целочисленных вычислений, но есть ли способ, чтобы увеличить лимит ?
Я имею в виду что-то вроде библиотеки ГМПА в C

+1

Я не думаю, что вы можете увеличить это. Вы можете использовать ['vpa'] (http://es.mathworks.com/help/symbolic/vpa.html) (или, если возможно, изменить свой код, чтобы избежать переполнения) –

+0

Согласитесь с Луисом Мендо. BTW, очень приятная картинка! – 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. Например, это не работает

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

    , потому что 10^500 оценивается как double, давая inf и затем используется в качестве входных данных для vpa.

+1

В случае, если 'vpa' недоступен, [Multiple Precision Toolbox] (http://www.mathworks.com/matlabcentral/fileexchange/6446-multiple-precision-toolbox-for-matlab) предлагает альтернативу. – Daniel

Смежные вопросы