Я недавно изучал, как выполнять двойные интегралы в python. Это то, что я использую:Выполнение двойного интеграла по матрице пределов
myint = dblquad(lambda xa,xb: np.exp(-(xa-xb)**2),-np.inf,x1,lambda x: -np.inf, lambda x: x2)
и для целей тестирования я выбрал x1 и x2 будет сказать, 5 и 10. Это похоже на работу.
Но в действительности мои x1 = [1,2,3,4,5] и x2 = [5,6,7,8,9], и я хочу, чтобы двойной интеграл выполнялся над каждой комбинацией x1 и х2, т. е. матрица. Я мог бы сделать это с 2 для петель, я думаю, но я думал, что может быть лучший способ.
Итак, мой вопрос - как мне выполнить двойную интеграцию по матрице пределов.
спасибо.
редактировать:
я получил следующее предупреждение:
UserWarning: The maximum number of subdivisions (50) has been achieved.
If increasing the limit yields no improvement it is advised to analyze
the integrand in order to determine the difficulties. If the position of a
local difficulty can be determined (singularity, discontinuity) one will
probably gain from splitting up the interval and calling the integrator
on the subranges. Perhaps a special-purpose integrator should be used.
Означает ли это, что он не сходится? Я не очень понимаю сообщение.
Когда я сюжет:
y = exp(-(x-5)^2)
, например, это выглядит как гауссовой кривой, так что нет никаких проблем интегрирования по правильно? Является ли проблема из-за двойного интеграла?
спасибо.
редактировать:
Ах, я вижу. Спасибо Raman Shah, я сейчас понимаю проблему.
Вы уверены, что этот интеграл сходится? – Stefan
Замечание Stefan важно, используя 'x1, x2 = (5,10)' дает предупреждение о том, что интегратор не сходится. Рассмотрим увеличение количества подразделений. – Hooked
Если вы интегрируете только гауссово, вы должны изучить специальные функции (например, функцию ошибки) для реализации своих функций. Вероятно, это будет быстрее и точнее. Изменить: Я думаю, что у вас есть что-то расходящееся, потому что подынтегральное выражение равно 1 для xa = xb, вплоть до -infinity. –