У меня есть это выражение монстра для распределения давления вокруг сферы, выражение
где Re [A] - действительная компонента предопределенного коэффициента, P - многочлены Легендры, а j и n - сферические функции Бесселя и Неймана.
Я хотел бы интегрировать это через тета, поэтому я определил функцию для уравнения выше следующим образом
def P_rms_calc(k,a,n_max,theta): # Return the P_rms function
# Obtain Coefficients
A_m = A_m_coeff(k,a,P_a,l,z0,n_max)
P_t = []
for m in range(n_max):
for l in range(m+1):
P_t.append(0.5*numpy.real(A_m[l])*numpy.real(A_m[m-l])*(legendre(l)(numpy.cos(theta)))*(legendre(m-l)(numpy.cos(theta)))*((spherical_jn(l,k*r)*spherical_jn(m-l,k*r))+
(spherical_yn(l,k*r)*spherical_yn(m-l,k*r))))
P_rms = numpy.sqrt(sum(P_t))
return P_rms
Однако, когда я пытаюсь интегрировать с помощью scipy.integrate.quad, вот так:
a0, err = quad(P_rms_calc(k,a,n_max,theta),-numpy.pi,numpy.pi)
он выдает 'error: quad: первый аргумент не вызывается'. И если я не приведу аргументы функции, как это,
a0, err = (1/(2*numpy.pi))*quad(P_rms_calc,-numpy.pi,numpy.pi)
это дает 'TypeError: P_rms_calc () принимает ровно 8 аргументов (1 дано)'
Я упускаю что-то простое в использовании четырехъядерного инструмента интеграции? Если нет, то есть ли лучший способ попробовать и интегрировать это выражение? Не стесняйтесь также рекомендовать более эффективный способ определения среднеквадратичного выражения давления. Для справки, я суммирую только от m = 0 до 6 или около того, поэтому время вычислений не страшно при использовании циклов for. Спасибо за помощь!