0

式の値をプログラムで決定する必要があります。

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 ily 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);
}

値のペアごとに戻り値が追加され、これが正しい答えを与えているようです。しかし、私はそれがどのように、そしてなぜ機能しているのか理解できません!

4

1 に答える 1