У меня возникают трудности при попытке выяснить, как интегрировать векторизацию на Python. Мой интеграл имеет вид erf c (x * a), и я хочу оценить интеграл для различных параметров unq = [0,1,2,3, ..... 1000]. В настоящее время я использую scipy.integrate для оценки интеграла по интервалам [0,50] с использованием FOR l oop. Тем не менее, это не является вычислительно эффективным при выполнении длинных симуляций.
import scipy.integrate as integrate
import scipy.special as special
import numpy as np
import matplotlib.pyplot as plt
import math as ma
unq = np.array([1,2,3,4,5,6])
F0 = np.arange(84600,86400*50,86400)
Z = 25
H = 50
k = 3.5
g_function_list = list()
for F in F0:
buffer = list()
for v,i in enumerate(unq):
T = lambda H:(((special.erfc(ma.sqrt(i**2+(Z-H)**2)/(2*ma.sqrt(F))))/(ma.sqrt(i**2+(Z-H)**2)))-((special.erfc(ma.sqrt(i**2+(Z+H)**2)/(2*ma.sqrt(F))))/(ma.sqrt(i**2+(Z+H)**2))))
results = integrate.quad(T,0,H)
buffer.append(results[0])
g_function_list.append(np.array(buffer)*(1/(4*np.pi*k)))
print(g_function_list)