在两个边界之间积分高斯分布[Python]

2024-05-16 04:01:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图得到高斯分布在两个边界之间的积分,给定高斯分布的平均值和标准差。你知道吗

import numpy as np
import scipy

mu = 5
sigma = 30
lowerbound = 0.5
upperbound = np.inf

# generate Gaussian function
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
gauss = scipy.stats.norm.pdf(x, mu, sigma)

# integrate between bounds
integral = scipy.integrate.quad(gauss, lowerbound, upperbound)

这引起了ValueError: invalid callable given,所以我做错了什么,但我不知道是什么。你知道吗


Tags: importnumpyasnpscipysigmainf平均值
1条回答
网友
1楼 · 发布于 2024-05-16 04:01:52

quad函数将函数作为其第一个输入,但您提供的数据来自于在x处计算的高斯函数:

import numpy as np
import scipy

mu = 5
sigma = 30
lowerbound = 0.5
upperbound = np.inf

# generate Gaussian function
def gauss(x):
    return scipy.stats.norm.pdf(x, mu, sigma)

# integrate between bounds
integral = scipy.integrate.quad(gauss, lowerbound, upperbound)
print(integral)
(0.5596176923702426, 5.087725389583706e-10)

如果要集成离散数据,scipy.integrate.quad不是该作业的工具。改用scipy.integrate.simps。你知道吗

相关问题 更多 >