如何运行不同常数值的相同积分?
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
。
我想运行对“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
。