интеграция массива с помощью np trapz - PullRequest
0 голосов
/ 06 августа 2020

Я использую np.trapz для интеграции с массивами какое-то время и до сих пор не имел с ним никаких проблем. Я получил распределение, которое явно имеет площадь меньше 1, потому что его максимумы составляют 0,16, а ширина распределения примерно равна 6, но, похоже, возвращается, что площадь под распределением составляет> 60.

Вот мой код:

import numpy as np
import matplotlib.pyplot as plt
data = np.load('dist.npy')
thetavals=np.linspace(0,2*np.pi,1000)
plt.xlabel(r'$\theta$')
plt.ylabel(r'$P(\theta)$')
plt.plot(thetavals,data[0:1000])
plt.show()

integralvalue=np.trapz(data)
print('The integral of this distribution results in: ',integralvalue)

1 Ответ

0 голосов
/ 07 августа 2020

Используя numpy trapz, без выбора параметра x, предполагается, что интервалы нашего распределения равномерно разделены, однако они должны быть разнесены по отношению к значениям тета, которые сформировали распределение в первую очередь , используя следующий код:

import numpy as np
import matplotlib.pyplot as plt
data = np.load('dist.npy')
thetavals=np.linspace(0,2*np.pi,1001)
plt.xlabel(r'$\theta$')
plt.ylabel(r'$P(\theta)$')
plt.plot(thetavals,data)
plt.show()

integralvalue=np.trapz(data,thetavals)
print('The integral of this distribution results in: ',integralvalue)

, как и ожидалось, получается число меньше 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...