我有两个带有多个参数的函数:
import numpy as np
from scipy.integrate import quad
gamma_s=0.1 #eV
gamma_d=0.1 #eV
T=298 #K
homo=-5.5 #eV
Ef=-5 #eV
mu=0 #eV just displaces the function
#Fermi-Dirac distribution
k=8.617333262e-5 #eV/K
def fermi (E:float, mu:float, T:float) -> float:
return 1/(1+np.exp((E-mu)/(k*T)))
#Lorentzian density of states
gamma=gamma_d+gamma_s
def DoS (E:float, gamma:float, homo:float, Ef:float) -> float:
epsilon=homo-Ef
v=E-epsilon
u=gamma/2
return gamma/(np.pi*((v*v)+(u*u)))
我知道如果我只想整合其中一个,比如说fermi
,那么我会使用
quad(fermi, -np.inf, np.inf, args=(mu,T))
fermi*DoS
但是我需要他们的产品相对于他们的公共变量的积分E
,我无法想象如何使用它,因为文档quad
中没有提到它。
我想我可以将另一个函数定义integrand
为他们的乘积并计算它的积分,但这听起来有些混乱,我更喜欢更简洁的方法。