如何运行不同常数值的相同积分?

how to run the same integral for different values of constants?

我想运行对“e”和“m”的不同值进行积分,并将结果放入列表中。

m =[0.14, 0.14, 0.14, 1.30, 4.50]
e = [2/3, -1/3, -1/3, 2/3, -1/3]

def f(z, r):
return ((e)**2)*(alpha_elm*Nc/2*np.pi**2)*(4)*(Q2)*(z**2)*((1-z)**2)*((scipy.special.k0(r*(z*(1-z)*Q2 + (m**2))))**2)

integrate.nquad(f, [[0, 1],[0, np.inf]])

我该怎么做?

您可以定义函数的 partially 应用版本,您可以在其中设置 e 和 m 的值。然后遍历它们的值范围并计算具体结果:

from functools import partial

def f(m, e, z, r):
    return ((e)**2)*(alpha_elm*Nc/2*np.pi**2)*(4)*(Q2)*(z**2)*((1-z)**2)*((scipy.special.k0(r*(z*(1-z)*Q2 + (m**2))))**2)

results = []
for mm, ee in zip(m, e):
    partial_f = partial(f, mm, ee)
    result = integrate.nquad(partial_f, [[0, 1], [0, np.inf]])
    results.append(result)

不过,我强烈建议重新格式化并分解函数的过于复杂的定义 f