Мне нужно выполнить 2D-интеграцию (одно измерение имеет бесконечную границу).В MatLab я сделал это с интегралом 2:
int_x = integral2(fun, 0, inf, 0, a, 'abstol', 0, 'reltol', 1e-6);
В Python я попробовал dblquad scipy:
int_x = scipy.integrate.dblquad(fun, 0, numpy.inf, lambda x: 0, lambda x: a, epsabs=0, epsrel=1e-6)
, а также попробовал использовать вложенные одиночные четырехугольники.К сожалению, оба варианта scipy занимают в ~ 80 раз больше времени, чем MatLab.
Мой вопрос: есть ли другая реализация 2D-интегралов в Python, которая может быть быстрее (я пробовал "quadpy" без особой выгоды)?В качестве альтернативы, могу ли я скомпилировать функцию Matrix 2 и использовать ее из Python, не требуя времени выполнения MatLab (и это даже кошерное)?
Заранее спасибо!Брэд
Обновление:
Оказывается, у меня нет "репутации", чтобы опубликовать изображение уравнения, поэтому, пожалуйста, имейте в виду форматирование: fun (N, t) = P (N) N ^ 2 S (N, t), где P (N) - логнормальное распределение вероятностей, а S (N, t) - довольно замысловатое, но экспоненциальное в простейшем виде и гипергеометрическая функция (усеченная)серия) в его наиболее сложной форме.N интегрируется от 0 до бесконечности и t от 0 до пи.