式の値をプログラムで決定する必要があります。
S = log(x 1 y 1 + x 2 y 2 + x 3 y 3 ...)
次の値のみを使用します。
lx i = log(x i ) ly i = log(y i )
lx iとly iのそれぞれの逆対数を計算することはおそらく非現実的であり、望ましくありません ...
この評価を単純な合計に分解できる方法はありますか?
編集
単純な合計で計算を行う C 関数をどこかで見ました。
double log_add(double lx, double ly)
{
double temp,diff,z;
if (lx<ly) {
temp = lx; lx = ly; ly = temp;
}
diff = ly-lx;
z = exp(diff);
return lx+log(1.0+z);
}
値のペアごとに戻り値が追加され、これが正しい答えを与えているようです。しかし、私はそれがどのように、そしてなぜ機能しているのか理解できません!