Распределительный участок с неправильной общей стоимостью - PullRequest
1 голос
/ 07 ноября 2019

Для создания enter image description here Я создал график распространения с кодом ниже:

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)
        FxSum += numb
        a.append(FxSum)
    return a

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

enter image description here

ЭтоКонечно же, это способ получить результат без использования hist (), cdf () или каких-либо других опций из библиотек Python.

Почему общая сумма не равна 1? Это не должно зависеть от (например) сигмы.

1 Ответ

1 голос
/ 07 ноября 2019

Почти верно, но для интеграции вам нужно умножить значение функции 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()
...