Python:下溢与大负数的 exp

计算科学 Python
2021-12-16 01:20:25

假设我有 log(P(x_i)) 的值,即事件 x_i 的对数概率。概率非常小,因此这些对数值的数量级为 -1e3。

我想计算一个期望值。为了评估相应的总和,我需要概率 P(x_i) 本身,所以我尝试调用numpy.exp. 但是,这仅返回 0,因为 Python 中基本浮点数的精度不足以解析像 exp(-1000) 这样的数字。

规避此问题的典型方法是什么?

1个回答

如果你的最终结果是数量级的exp(-1000) 510435,那你就倒霉了;无论你如何计算它,它总是会下溢。根本没有可表示的浮点数binary64那么小。较慢Bigfloat的 s 是唯一的出路。

然而,一些大/小中间值的问题可以通过一些操作来解决: