我正在处理非常大的数字,范围为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
任何人都可以帮我这样做吗?
答案 0 :(得分:4)
您仍然可以使用变精度算术模块vpa
。只需确保将vpa
调用的指数置于之外:
>> A = vpa(10)^400
A =
1.0e400
答案 1 :(得分:3)
您可以查看MATLAB文件交换中的Variable Precision Integer Arithmetic库。其用途的一个例子如下:
>>> A = vpi(17)^17
ans =
827240261886336764177
>>> 17 + A^17
ans =
39786732894291535047752038041559739510060813980024082
30012867731573722066105737100731556603857745946047229
53759676529121155309750944582301597489457676380805029
59227566911971103003303064782118652210655457390045806
99039190393572334521701109889855832341416056005878848
49943142324389193616484809157960034059531548585473213
36465170635561696613297503569949729314
这似乎就是你想要的。