在matlab中使用大参数的指数函数

时间:2014-11-05 21:16:43

标签: matlab exponential largenumber

我有一个问题需要更长的时间,如果你能以某种方式帮助我,我真的很感激...

我在MATLAB(版本R2012a)中有一个代码,我使用MATLAB函数exp计算一些指数函数。这意味着我有这样的事情:

y = exp(x);

然而,当这个" x"大于某个数字,结果(" y")是无穷大;什么时候" x"小于一定数,结果为0.正如MathWorks上所说的那样。网站:

  

当真实的绝对值时,可能会发生数值异常   浮点参数x的一部分很大。如果ℜ(x)< -7.4 * 10 ^ 8,   那么exp(x)可能会返回截断的结果0.0(针对   溢)。如果ℜ(x)> 7.4 * 10 ^ 8,然后exp(x)可以返回   等值的浮点等效RD_INF。

我的问题很明显 - 我的" x"非常大,所以我收到无穷无尽,而不是我需要的结果。我的问题是 - 如何获得真实的结果?在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

vpa与字符串输入结合使用:

>> exp(1000)
ans =
   Inf

>> vpa('exp(1000)')
ans =
1.9700711140170469938888793522433*10^434

请注意vpa的结果属于sym类。

答案 1 :(得分:0)

任何语言的变量都以一定的字节存储在计算机的内存中。用于保存变量类型的字节越多,变量可以保存的结果越精确。如果使用整数,则最大类型使用64字节并且是uint64。这是一个无符号整数(意思是它只能是正数),范围从0到18,446,744,073,709,551,615。如果您需要小数,请尝试使用vpa。