log( 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) である場合に便利です。(この式は、このスレッドで説明されています -> コンポーネントの対数項から対数(項の合計) を計算する方法)。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
3 つの値のうち、log(exp(A1) + exp(A2)) の真の値に最も近いのはどれですか? A1、A2が小さい場合とA1、A2が大きい場合の両方で使用できるlog(exp(A1) + exp(A2))を計算する堅牢な方法はありますか?
前もって感謝します