Python 总值错误的分布图

Python 总值错误的分布图,python,numpy,distribution,normal-distribution,Python,Numpy,Distribution,Normal Distribution,创造 我制作了一个分布图,代码如下: 从numpy导入* 将numpy作为np导入 将matplotlib.pyplot作为plt导入 西格玛=4.1 x=np.linspace(-6*sigma,6*sigma,200) def发行版(n): def g(x): 收益率(1/(西格玛*平方比(2*pi))*exp(-0.5*(x/西格玛)**2) FxSum=0 a=列表() 对于范围(n)中的i: #分成200个部分,逐个求和 numb=g(-6*sigma+(12*sigma*i)/n)

创造 我制作了一个分布图,代码如下:

从numpy导入*
将numpy作为np导入
将matplotlib.pyplot作为plt导入
西格玛=4.1
x=np.linspace(-6*sigma,6*sigma,200)
def发行版(n):
def g(x):
收益率(1/(西格玛*平方比(2*pi))*exp(-0.5*(x/西格玛)**2)
FxSum=0
a=列表()
对于范围(n)中的i:
#分成200个部分,逐个求和
numb=g(-6*sigma+(12*sigma*i)/n)
FxSum+=numb
a、 追加(FxSum)
归还
plt.plot(x,distr(len(x)))
plt.show()

当然,这是一种获得结果的方法,无需使用hist()、cdf()或Python库中的任何其他选项


为什么总数不是1?它不应该依赖于(例如)sigma。

几乎正确,但是为了积分,你必须将函数值
g(x)
乘以你的小间隔
dx
12*sigma/200
)。这就是你总结的领域:

from numpy import *
import numpy as np
import matplotlib.pyplot as plt

sigma = 4.1

x = np.linspace(-6*sigma, 6*sigma, 200)

def distr(n):
    def g(x):
        return (1/(sigma*sqrt(2*pi)))*exp(-0.5*(x/sigma)**2)
    FxSum = 0
    a = list()
    for i in range(n):
        # divide into 200 parts and sum one by one
        numb = g(-6*sigma + (12*sigma*i)/n) * (12*sigma/200)
        FxSum += numb
        a.append(FxSum)
    return a

plt.plot(x, distr(len(x)))
plt.show()

是的,“小”错误(小到dx:-)。谢谢哈哈:不客气,很高兴我能帮上忙。如果你高兴的话,可以随意将此标记为已接受的答案。