我必须以编程方式确定表达式的值:
S = log(x 1 y 1 + x 2 y 2 + x 3 y 3 ...)
仅使用以下值:
lx我= 日志(x我) 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);
}
为每对值添加返回值,这似乎给出了正确的答案。但我无法弄清楚它是如何以及为什么起作用的!