与Python的蒙特卡洛集成

问题描述 投票:0回答:1

用蒙特卡洛积分估算以下积分:

“”

我正在尝试对以下问题进行蒙特卡洛积分,其中p(x)是高斯分布,均值是1,方差是2。(参见图片)。>>

有人告诉我们,一旦我们从正态分布中抽取样本,pdf就会消失在积分中。请解释这个概念,以及如何在Python中解决这个问题。以下是我的尝试。

def func(x):
return (math.exp(x))*x

mu = 1
sigma = sqrt(2)
N = 1000
areas = []
for i in range(N):
    xrand = np.zeros(N)

    for i in range (len(xrand)):
        xrand[i] = np.random.normal(mu, sigma)
        integral = 0.0

    for i in range (N):
        integral += func(xrand[i])/N

    answer = integral
    areas.append(answer)

plt.title("Distribution of areas calculated")
plt.hist(areas, 60, ec = 'black')
plt.xlabel("Areas")

integral

[估计以下与蒙特卡洛积分的积分:我正在尝试对以下问题进行蒙特卡洛积分,其中p(x)是高斯分布,平均值为1,方差为...

python integration montecarlo
1个回答
0
投票
Monte Carlo积分是一种无需计算闭合形式的解即可逼近复杂积分的方法。为了回答您的问题,PDF消失了,因为您要做的只是1)从指定的正态分布中采样一些随机值,2)计算被积函数中的函数值,3)计算这些值的平均值。请注意,PDF与计算无关。仅在确保更频繁地采样值时才有意义。您可能会理解为采用加权平均值,如果这样可以使事情更直观。

这里是基于原始源代码的Python实现。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.