2016-11-20 19 views
0

根據這一線索:爲什麼像這樣實現log_sum更高效?

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

我很困惑,爲什麼這種做法是更有效的..有沒有人有這個想法:To Compute log(a+b)

有時log_sum是這樣實現的?

+0

與其他選擇相反嗎? –

+1

這不是,在相反的(並沒有在尖銳的答案中說)。 –

回答

3

a恆定(至少對於某些b值)和b<<a(顯着更小)時,此方法可能會有用。在這種情況下log(1 + b/a)可以通過Taylor series擴張速度快,具有良好的精度計算(在某些數學庫log1p功能,another method

2

一個地方,我已經看到了這樣的事情與概率,或似然性交易時,上高維空間。有時人們希望像計算

p1 + p2 + .. 

款項然而,這樣的概率往往是太小雙打來表示,所以人們常常用日誌的概率,而不是工作。然後,我們想計算

log(exp(l1) + exp(l2) + ..) 

其中l爲P1等的日誌 的問題是,如果一個人只是評估EXPS,一個很可能得到0,然後表達變得indefined。但你暗示的伎倆就派上用場了,我們可以評估

l1 + log(1 + exp(l2-l1) + ...) 

,這將評估(至少如果L1是最大的L的)合理。

所以這不是一個效率問題,而是繞過雙精度的有限精度。