由于舍入误差无法获得两个数字之间的比率:
Ratio=exp(x)/(exp(x)+exp(y))
,x=-1.11e4
和y=-1.12e4
。
任何数学或计算技巧?
答案 0 :(得分:5)
您可以像这样简化:
R = exp(x) / (exp(x) + exp(y))
= exp(x) / (exp(x) * (1 + exp(y) / exp(x)))
= 1 / (1 + exp(y) / exp(x))
= 1 / (1 + exp(y - x))
(这与DiltihiumMatrix导出的结果相同,但是无需进入日志域并再次返回即可获得。)
答案 1 :(得分:3)
如何在对数空间中进行数学操作......
R = exp(x)/[exp(x)+exp(y)]
log(R) = log[exp(x)] - log[exp(x)+exp(y)]
= log[exp(x)] - log[exp(x)*(1+exp(y)/exp(x))]
= log[exp(x)] - log[exp(x)*(1+exp(y-x)]
= log[exp(x)] - log[exp(x)] - log[(1+exp(y-x))]
= - log[(1+exp(y-x))]
现在,exp(y-x)
应该是一个合理的数字,因此您可以轻松地计算出来。然后使用R = exp(log(R))
转换回普通空间。
如果仍然不起作用,您实际上可以taylor expand the last line:
log[(1+z)] ~ 1 + z^2/2 - z^3/3 ...
适用于小型z
,在本例中为z = exp(y-x)
。