$$ P(\varepsilon) = \frac{1}{4k} \mathrm{sech}^2 \frac{\varepsilon}{2k}$$
$$ CDF(\varepsilon) = \frac{\tanh(\frac{\varepsilon}{2k})}{2} $$
$$ CDF^{-1}(c) = \frac{c}{2\tanh^{-1}(2k_BT)} $$
Теперь, что я должен сделать, чтобы сгенерировать N образцов с моим PDF P (\ varepsilon) заданного k?
Вот что у меня есть до сих пор:
import numpy as np
def sampleConduction(N, kT):
for i in range(N):
c = np.random.random()
list = [c]
print('list=',list)
g = np.column_stack(list)
print('g=',g)
d = np.arctanh(2*list)+2*kT
return d
sampleConduction(3,0.1)
Результат этого кода:
list= [0.7687170402304889]
list= [0.24759083266582882]
list= [0.18334770166799108]
g= [[0.1833477]]
array([0.38544466, 0.38544466]) # d
Я хотел объединить 3 списка в один, но мне не удалось использовать np.column_stack(). Что мне попробовать дальше?
Большое спасибо!
*
, а не+
. (2) Выражениеtanh^{-1}(x)
не является1/tanh(x)
.tanh^{-1}
— это функция, обратная гиперболическому тангенсу. В numpy эта функция называетсяnumpy.arctanh
. - person Warren Weckesser   schedule 16.09.2018scipy.stats.rv_continuous
может быть вариантом. См., например. здесь для отправной точки. Этот класс может генерировать образцы, если ему предоставлен только pdf, но я подозреваю, что он будет работать лучше, если вы также предоставите cdf или, что еще лучше, обратный cdf. - person Paul Panzer   schedule 16.09.2018numpy.random.logistic
а>. - person Warren Weckesser   schedule 16.09.2018