作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
从概念上讲,我需要将每个巧合事件的概率相乘。由于可能涉及很多事件,所以我让计算机添加对数以避免下溢。
但突然我无法说服自己在开始添加之前应该将返回值初始化为零。我知道零是加法的单位元素,我记得我就是这样做的,但是,看看 graph of the logarithm ,我可以清楚地看到零的反对数是负无穷大。
所以将返回值初始化为零应该相当于将我所有的概率乘以负无穷大,这绝对是不正确的。我做错了什么?
最佳答案
如果将值相乘,它们看起来像这样:
product = 1*p1*....*pn
如果取两边的自然对数,它看起来像这样:
ln(product) = ln(1) + ln(p1) + .... + ln(pn)
但是ln(1) = 0
,这就是初始化对数总和的方法。将其设置为零。
记住你在这里总结的内容:每个概率的对数加到总概率的对数中。完成总和后,您可以得到如下产品:
product = exp(ln(product)) = exp(ln(sum of ln(pn))
关于math - 通过对数相加进行乘法——单位元为零吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4968764/
我是一名优秀的程序员,十分优秀!