Math 计算对数时的增量值

Math 计算对数时的增量值,math,logarithm,natural-logarithm,Math,Logarithm,Natural Logarithm,我用一个公式来计算一个参数,这个公式包括取一个值的对数,这个值有时可以是零。为了处理这种情况,我在文献中阅读了将一些delta值放入的技术,如下所示: ln(delta + A) 这里,参数A是一个介于[0,1]之间的实数 我应该为增量分配什么值?我是否应该分配delta=1,以便ln(delta+A)在A为0时返回0 此外,对于使用自然对数或以10为基数或以2为基数的对数,是否有任何选择规则 以下是我使用的公式: Lw = exp[ 1 / N( sum[ log( delta + Lw(

我用一个公式来计算一个参数,这个公式包括取一个值的对数,这个值有时可以是零。为了处理这种情况,我在文献中阅读了将一些delta值放入的技术,如下所示:

ln(delta + A)
这里,参数
A
是一个介于
[0,1]
之间的实数

我应该为增量分配什么值?我是否应该分配
delta=1
,以便
ln(delta+A)
A
0
时返回
0

此外,对于使用自然对数或以10为基数或以2为基数的对数,是否有任何选择规则

以下是我使用的公式:

Lw = exp[ 1 / N( sum[ log( delta + Lw( x, y ) ) ] ) ]

请参考此链接进行解释:

如果不知道A的范围,很难回答

如果A通常是一个整数,但有时恰好是0,那么返回
log(A+1)
将执行您想要的操作,但当A为0时返回0。问题是,如果您使用
log(A+1)
而不是
log(A)
,这将对答案的使用产生什么影响,因为它们在数学上是不同的

--编辑--

对于A作为[0,1]范围内的实值,log(A)的值无论如何都是负值。在这种情况下,log(0)的合理答案是-无穷大。大多数编程语言使用来表示浮点值,该标准包括一个-Infinity值作为一个特殊值。这里使用-Infinity将保持单调性,即如果a 代码将取决于登录使用的实现;除非确定log(0)将返回-无穷大,否则显然要做的就是检查:

if(A == 0)
   result = -INFINITY; // macro in math.h
else
   result = log(A); 

作为一个(GNU)C示例。

您能告诉我们更多关于结果的用途,作为a提供的值的范围吗?这听起来不对。你应该重新评估你的公式,而不是用这种方式来掩饰。@PhilH:A是[0,1]范围内的实数吗?δ不应该足够小吗?所谓的ε?也就是说,
delta=10^{-6}
?如果该值代表一个概率,那么在统计学中处理它的方法是根据logit函数重新进行表达。你没有这样的问题。嗨,我已经编辑了这个问题。参数A是一个从[0,1]到[1]的实数。我已经用我正在使用的公式的细节更新了这个问题。请检查一下。