2010-10-20 824 views
32

我想知道log(a + b)的完整扩展。如何扩展并计算log(a + b)?

例如

log(a * b) = log(a) + log(b); 
log(a/b) = log(a) - log(b); 

此类似,是有日志中的任何扩张(A + B)?

+6

任何支持'log'的编程语言都可以在数值上计算'log(a + b)'。 – kennytm 2010-10-20 04:48:11

+3

属于http://math.stackexchange.com – 2010-10-20 06:57:59

+3

我想我应该在这个问题下评论,因为我已经结束了在这里寻找这个问题的答案。在贝叶斯推断的情况下,将后验概率转换为日志空间需要您记录分数(它是积分的)(或通过求和的近似)。但是,这个总和必须转化为日志空间,因为它的计算是我们首先转向记录空间的原因。有一种常用的方法称为log-sum-exp技巧。谷歌这一点,你会看到它是如何使用它。不完全一样的东西,但相关足够:) – mahonya 2011-10-25 10:07:08

回答

71

一般来说,一个不扩大log(a + b);你只是照原样处理它。尽管如此,也有偶尔在有意义使用以下身份情况:

log(a + b) = log(a * (1 + b/a)) = log a + log(1 + b/a) 

(事实上,这个身份经常在数学库实现log时使用)。

+9

而且,我们还可以使用泰勒级数展开ln(1 + b/a)... – 2010-10-20 06:34:16

+5

@ wiz kid:当然,假设“b”的数量级小于“a”。 (否则,交换它们)。 – 2010-10-20 06:36:14

+0

非常感谢好友:) – 2010-10-20 06:36:46

-8

为什么你会想要这样做? log (a*b) = log a + log b仅适用于此属性,因为它将乘法运算转换为加法运算。 log (a+b)已经只涉及一个补充,所以没有任何进一步的扩展是没有意义的。

当然,您可以使用the several series之一来计算对数,但最快的方法是直接简单计算log (a+b)。对于这个问题,在大多数计算机上,即使log (a*b)将比log a + log b更快,因为后者涉及额外的对数操作。

+26

因为有时你只能计算log(a)和log(b)而不是明确地a + b并取日志 – Jing 2012-11-17 14:28:31

相关问题