Как я могу вычислить 10^400, без MATLAB, возвращающего "inf"?

Я имею дело с очень большими числами, в масштабе 10^500,10^800, Когда я пытаюсь рассчитать 10^309 это возвращается inf,

>> 10^309
ans =
   Inf

Я проверял format long это также возвращает inf,

>> format long 
>> 10^309
ans =
   Inf

Я также проверил vpa функция:

vpa(10^309,309)
ans =
    Inf

Как я могу рассчитать и использовать большие числа в моем расчете? Я не могу использовать логарифм, потому что мне нужны все цифры в очень больших числах. т.е. я хочу, чтобы MATLAB вернул следующее для 10^308

vpa(10^308,308)
    ans =
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Может ли кто-нибудь помочь мне сделать это?

2 ответа

Вы все еще можете использовать модуль арифметики с переменной точностью vpa, Просто убедитесь, что вы положили показатель за пределы vpa вызов:

>> A = vpa(10)^400

A =

1.0e400

Вы можете взглянуть на целочисленную арифметическую библиотеку Variable Precision, которая находится на обмене файлами MATLAB. Пример его использования следующий:

>>> A = vpi(17)^17 
ans = 
827240261886336764177

>>> 17 + A^17 
ans = 
39786732894291535047752038041559739510060813980024082 
30012867731573722066105737100731556603857745946047229 
53759676529121155309750944582301597489457676380805029 
59227566911971103003303064782118652210655457390045806 
99039190393572334521701109889855832341416056005878848 
49943142324389193616484809157960034059531548585473213 
36465170635561696613297503569949729314 

Кажется, это то, что вы хотите.

Другие вопросы по тегам