Я пытаюсь смоделировать систему реакций во времени. Для этого мне нужно умножить значение вероятности возникновения реакции на заранее рассчитанный временной шаг, на котором она может произойти, сохранить этот результат в новой переменной и использовать новую переменную для выборки из распределения Пуассона.
Это фрагмент моего кода:
lam = (evaluate_propensity*delta_t)
rxn_vector = np.random.poisson(lam) # probability of a reaction firing in the given time period
Я написал функцию для вычисления значения delta_t на основе параметров системы c, рассчитанное значение очень мало 0.00014970194372884217
и я думаю, что это влияет на функцию np.random.poisson.
Переменная evaluate_propensity
представляет собой массив, который детализирует вероятность протекания реакции на основе количества молекул в системе и ios крысы между молекулами в реакции. Это вычисляется динамически и изменяется после каждой итерации по мере изменения количества молекул, но значения для первой итерации:
evaluate_propensity = np.array([1.0, 0.002, 0.0, 0.0])
В документации указано, что lam
должно быть >= 0
, а мое - (просто ), но rxn_vector
просто всегда возвращает массив нулей.
rxn_vector = [0 0 0 0]
Я знаю, что последние два элемента массива будут иметь нулевое значение. Но не думал, что и первые двое тоже. Есть ли способ сделать его более чувствительным или каким-то образом усилить мои результаты, или я что-то делаю не так?
Ура