我想计算日志( exp(A1) + exp(A2) )。
下面的公式
log(exp(A1) + exp(A2) ) = log[exp(A1)(1 + exp(A2)/exp(A1))] = A1 + log(1+exp(A2-A1))
当 A1 和 A2 很大并且数值为 exp(A1)=Inf(或 exp(A2)=Inf)时很有用。(这个公式在这个线程中讨论 -> 如何从其组件 log-terms 计算 log(sum of terms))。当 A1 和 A2 的角色被替换时,公式为真。
我对这个公式的关注是当 A1 和 A2 非常小时。例如,当 A1 和 A2 是:
A1 <- -40000
A2 <- -45000
那么 log(exp(A1) + exp(A2) ) 的直接计算是:
log(exp(A1) + exp(A2))
[1] -Inf
使用上面的公式给出:
A1 + log(1 + exp(A2-A1))
[1] -40000
这是A1的值。将上面的公式与 A1 和 A2 的翻转角色一起给出:
A2 + log(1 + exp(A1-A2))
[1] Inf
这三个值中哪个最接近 log(exp(A1) + exp(A2)) 的真实值?是否有稳健的方法来计算 log(exp(A1) + exp(A2)) 可以在 A1、A2 较小且 A1、A2 较大时使用。
先感谢您