算术平均值,指数为小数

时间:2016-05-18 22:27:10

标签: rounding mean exponential

由于舍入误差无法得到三个数字的平均值:

平均值= 1/3 * [exp(a)+ exp(b)+ exp(c)]使得a = -1.11e4 b = -1.12e4且c = -1.13e4。有任何数学技巧吗?或者如何以日志值获得结果?

1 个答案:

答案 0 :(得分:1)

您尝试查找log((exp(a) + exp(b) + exp(c)) / 3),但abc非常低,exp的结果下溢为0。您可以通过调整值来解决此问题,以便exp不会下溢。

d = max(a, b, c)。然后我们有以下平等:

M = log((exp(a) + exp(b) + exp(c)) / 3)
  = log(exp(d) * (exp(a-d) + exp(b-d) + exp(c-d)) / 3)
  = log(exp(d)) + log((exp(a-d) + exp(b-d) + exp(c-d)) / 3)
  = d + log((exp(a-d) + exp(b-d) + exp(c-d)) / 3)

因此我们可以将结果计算为d + log((exp(a-d) + exp(b-d) + exp(c-d)) / 3)。由于d等于abc中的一个,因此exp个参数之一为0,其余参数最多为0。因此,其中一个exp输出为1,其余为最多1.我们不必担心溢出或下溢;虽然在一个或多个exp调用中仍可能出现下溢,但它不再是问题,因为log参数不会为0.