如何解决使用重要性采样公式积分
我正在尝试通过重要性采样公式进行积分。算法如下: Code
积分值应为:0.838932960013382
另外我必须使用下一个 probability distribution 生成 1,000,000 个介于 0 和 1 之间的随机数。我还使用下一个权重 function。 最后,我必须用这些数字计算这个 formula。 但是我得到的数值是错误的,我不确定 1.000.000 个随机数的计算。
解决方法
你没有正确计算权重归一化和逆,检查你的数学
以下代码,Python 3.9,Win 10 x64
import numpy as np
from scipy import integrate
def f(x):
return 1.0/((np.exp(x)+1.0)*np.sqrt(x))
def w(x):
return 0.5/np.sqrt(x)
def inv(x):
return x*x
rng = np.random.default_rng()
N = 100000
x = rng.random(N)
p = inv(x)
q = f(p)/w(p)
print(np.mean(q))
print(integrate.quad(f,1))
印刷品
0.8389948486429488
(0.8389329600133858,2.0727863869751673e-13)
好看吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。