2010-10-20 102 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

相關問題