Python上的积分的向量化(评估参数数组的积分)

时间:2020-01-12 22:11:50

标签: python vectorization integration

我很难弄清楚如何在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)

0 个答案:

没有答案
相关问题