gpt4 book ai didi

c++ - 用 C++ 快速实现反不完全 Beta 函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:22 28 4
gpt4 key购买 nike

我正在寻找 Inverse Incomplete Beta Function 的实现,可能已经用 C++ 编写或者我自己很容易实现。但是,我需要它快!比如,我将在优化器的内部循环中运行它,因此它有望在几百个时钟周期内完成。

这里已经有几个线程,但在这种情况下,我愿意为了速度而放弃很多准确性。此外,域在一定程度上受到限制,因为我只对 a 和 b 使用整数值。

有关此问题的更多背景信息:我给出了整数个试验 n 和一个整数 k <= n 这些成功的试验。我假设成功试验的潜在概率的背景分布在 [0,1] 中是均匀的,因此鉴于我已经看到了一些试验和成功,我的后验分布应该是 beta 分布。在贝叶斯模型中,我实际上是在尝试找到可能的潜在概率的第 p 个百分位数。

同样,我不需要它非常准确,只要快就行。我可以处理高达 +/- 1% 的误差。但是,对于小数字,它不会非常不准确:我的输入范围从接近零到数万不等。

提前致谢!如果需要任何说明,请告诉我。

最佳答案

一种方法是制作表格。如果您需要区分,则需要对其进行插值。如果您保留除一个参数之外的所有参数,这可能只是您的替代方案,但我认为您这样做了吗? (OP 说不)

您可能希望使表分箱成为非线性的,以便按照您的要求在低 x 下获得良好的精度。尝试与 x、x^2 等成比例的 bin 大小。

2。使用简单的搜索方法,例如 http://en.wikipedia.org/wiki/Secant_method找到作为(非逆)不完全 beta 函数的幂展开函数的值。 http://en.wikipedia.org/wiki/Beta_function#Incomplete_beta_function .这仅在单调时有效。

  1. 首先确保您确实需要制定自己的方法。也许先试试这些? http://www.boost.org/doc/libs/1_35_0/libs/math/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_inv_function.html

关于c++ - 用 C++ 快速实现反不完全 Beta 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8956503/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com