Я хочу решить проблему со сборщиком купонов в общем случае (с разными возможностями для каждого купона), используя формулу Флайолета, которую я нашел в википедии (см. https://en.wikipedia.org/wiki/Coupon_collector%27s_problem).). По формуле я должен вычислить интеграл, гдеподынтегральное выражение является продуктом. Я использую scipy.integrad.quad и лямбда-нотацию для интеграции. Проблема в том, что число факторов в подынтегральном выражении не является фиксированным (имеет параметры, поступающие из списка). Когда я пытаюсь умножитьФакторы интегрирования Я получаю ошибку, так как я не могу умножить формальные выражения, по-видимому. Но если я этого не сделаю, я не знаю, как получить переменную интеграции x in.
Я нашел способы интегрировать продукт,если есть, например, только два фактора. И это, кажется, не связано с двойной интеграцией или чем-то подобным. Может ли кто-нибудь помочь (я новичок в этом деле)?
import numpy as np
from scipy import integrate
....
def compute_general_case(p_list):
integrand = 1
for p in p_list:
integrand_factor = lambda x: 1 - np.exp(-p * x)
integrand *= integrand_factor
integrand = 1 - integrand
erg = integrate.quad(integrand, 0, np.inf)
print(erg)