根據這一線索:爲什麼像這樣實現log_sum更高效?
log(a + b) = log(a * (1 + b/a)) = log a + log(1 + b/a)
我很困惑,爲什麼這種做法是更有效的..有沒有人有這個想法:To Compute log(a+b)
有時log_sum是這樣實現的?
根據這一線索:爲什麼像這樣實現log_sum更高效?
log(a + b) = log(a * (1 + b/a)) = log a + log(1 + b/a)
我很困惑,爲什麼這種做法是更有效的..有沒有人有這個想法:To Compute log(a+b)
有時log_sum是這樣實現的?
當a
恆定(至少對於某些b
值)和b<<a
(顯着更小)時,此方法可能會有用。在這種情況下log(1 + b/a)
可以通過Taylor series擴張速度快,具有良好的精度計算(在某些數學庫log1p
功能,another method)
一個地方,我已經看到了這樣的事情與概率,或似然性交易時,上高維空間。有時人們希望像計算
p1 + p2 + ..
款項然而,這樣的概率往往是太小雙打來表示,所以人們常常用日誌的概率,而不是工作。然後,我們想計算
log(exp(l1) + exp(l2) + ..)
其中l爲P1等的日誌 的問題是,如果一個人只是評估EXPS,一個很可能得到0,然後表達變得indefined。但你暗示的伎倆就派上用場了,我們可以評估
l1 + log(1 + exp(l2-l1) + ...)
,這將評估(至少如果L1是最大的L的)合理。
所以這不是一個效率問題,而是繞過雙精度的有限精度。
與其他選擇相反嗎? –
這不是,在相反的(並沒有在尖銳的答案中說)。 –