【发布时间】:2015-09-18 17:35:42
【问题描述】:
我正在使用 NetLogo 中的 stats 扩展来计算 beta 函数:
set z (stats:beta (H + 1) (T + 1))
其中 H 和 T 是抛硬币时正面和反面的数量。 stats扩展的使用不是必须的,我在使用beta函数的阶乘表达式时也遇到了同样的问题。
问题是当H + T > 168,NetLogo 报告z = 0 并且有一些程序我不能执行[特别是beta 分发]
有什么方法可以近似 Netlogo 中的 beta 函数(或分布),使其不会遇到这个问题?
【问题讨论】:
-
如果您在这里没有得到任何乐趣,您可以尝试在统计论坛中提问(以稍微不同的方式关注近似方面而不是 NetLogo)。他们可能更适合提供有关替代计算方法的建议。
-
谢谢 JenB,如果我没有得到回复,我会在几天后这样做。实际上,我认为核心问题是 NetLogo 无法计算大于零和小于 -aprox- 2 E-51 的数字。它只报告这些值为零。
-
请注意,NetLogo 使用 IEEE 754 双精度浮点,与大多数编程语言遵循的浮点标准相同,所以我认为您的问题并不是 NetLogo 特有的。跨度>
-
P.S.我不认为 2E-51 是正确的界限。 IEEE 754 降至 4.9E-324。
-
我认为问题在于计算大阶乘。 β 函数 B(H,T) 的分母是阶乘 (H+T-1)。但是如果 H+T-1 > 170,那么我们有一些 > E325。事实上,当我尝试计算阶乘(171)时,Netlogo 报告“Infinity”。
标签: netlogo