gpt4 book ai didi

python - 使用辛普森规则整合正态分布

转载 作者:行者123 更新时间:2023-11-28 20:46:42 26 4
gpt4 key购买 nike

我正在尝试使用 scipy.integrate.simps 执行简单的集成函数,我无法弄清楚它显示的结果。

这是一个 MWE:

import numpy as np
from scipy.integrate import simps

# Same normal function used by np.random.normal
def norm_func(x, mu, sigma):
y = 1/(sigma*np.sqrt(2*np.pi))*np.exp(-(x-mu)**2/(2*sigma**2))
return y

# Generate some random points from the normal distribution.
a = np.random.normal(1., 0.1, 1000)

# Integrate the evaluated values of these points.
print simps(norm_func(a, 1., 0.1), a)

我希望如此,因为我是从 normal distribution 中抽取随机数然后将他们的评估整合到等效正态分布中,我应该得到整合所述正态分布的结果 which is 1 (或非常接近)。

相反,我发现结果似乎随 a 的样本大小而变化。更糟糕的是,如果我在 a = np.random.normal(1., 0.1, 10000) 中设置 10000 的值,集成将返回一个值。 p>

我在这里做错了什么?

最佳答案

使用您的示例,只需先对 a 进行排序,因为它应该是要采样的点数组,并且它希望它们是为了构建近似值。辛普森规则使用

simpsons rule

因此它将从您的数组中获取 x 的值并评估该函数。如果它们的顺序是随机的,您会发现上面的公式毫无意义,因为它会从域上的一个随机点到另一个随机点进行积分。将其视为 x 可能更好,因此我将使用该变量名称:

x = np.random.normal(1., 0.1, 1000)
x.sort() # sorts in place
print simps(norm_func(x, 1., 0.1), x)
#0.999914876748

这也适用于我:

s = np.sort(np.random.normal(1., 0.1, 10000))
print simps(norm_func(s, 1., 0.1), s)
#0.999943377731

关于python - 使用辛普森规则整合正态分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20379874/

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