我很难弄清楚如何在Python上进行Vectorize集成。我的积分形式为erfc(x * a),我想评估各种参数unq = [0,1,2,3,..... 1000]的积分。当前,我正在使用scipy.integrate通过FOR循环评估区间[0,50]上的积分。但是,在运行长时间仿真时,它的计算效率不高。
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)