Как я могу вычислить 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
Кажется, это то, что вы хотите.