【发布时间】:2020-03-26 10:24:24
【问题描述】:
我正在尝试从以非常小的浮点作为输入并给我结果 0 的指数中获取精确值。
您可以使用以下代码重现问题:
import numpy as np
from math import sqrt, log, exp, pi
k = np.array([[-746.9292399]])
z = exp(k)
print(z)
这个结果将是 0 ,对于我的电脑来说,任何小于 -743.0 的结果都是 0
我已经尝试使用 mpmath 来解决这个问题,如下所示:
import numpy as np
from math import sqrt, log, exp, pi
import mpmath as mp
k = np.array([[-746.9292399]])
z = mp.exp(float(k))
print(z)
det = np.linalg.det([[z,2,3],[2,2,z],[3,6,2]])
print(det)
这为 exp() 提供了一个很好的答案,但是我还需要将该结果放入一个 numpy 数组中,并从中提取行列式,这会在我附加的代码中引发错误,因为 numpy 没有就像数组中的 mpf 数字一样。
任何人都知道我如何从 exp() 中获取结果,以便我可以将它与 numpy 及其函数一起使用?
【问题讨论】:
-
作为参考,在数学上,
exp(-746.9292399)是 4.0997...e-325。 binary64 的最小值是 4.940656...E-324
标签: python arrays numpy floating-point exp