Интеграция в python с изменением граничных условий - PullRequest
0 голосов
/ 23 марта 2020

Я работаю над вычислением потока (назовем его 'y') как функцию частоты (назовем это 'x'), то есть спектра, источника. Модель дает решение, которое зависит от трех интегралов аналитических c функций с конечными граничными условиями, которые являются функцией от x.

. Я использовал scipy.integrate.quad для вычисления этих интегралов. Проблема в том, что я не могу дать ему векторы в качестве граничных условий и вернуть вектор решений, поэтому я использовал a для l oop по x и вычислял для каждого x границы и полученный интеграл, как это:

x1 = (A/E_l)**2.
x2 = (A/E_max)**2.
I0 = integrate.quad(lambda x: (x**((p-3.)/2.))*((g(x,A,E_max))**(p-2.))*(F(x)), x1, x2)[0]

, где x1, x2 - границы, A, E_l и E_max определены в каждой итерации l oop, F и g - функции, которые я определил в начале, p - постоянная, которую я также определил before и I0 - результат интеграции.

Каждая интеграция занимает около 0,15 секунды, что много времени. Знаете ли вы, как сделать это более эффективно? Я пытался запустить его параллельно, но мой p c может сократить его только до половины времени.

...