如何在没有MATLAB返回的情况下计算10 ^ 400" inf"?

时间:2015-10-15 20:17:25

标签: matlab calculus

我正在处理非常大的数字,范围为10^50010^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 个答案:

答案 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 

这似乎就是你想要的。