我有一个令人讨厌的不连续二维积分I(k,k''; J,Jp,a,b,c,d)
,它有 4 个变分参数(a,b,c,d)
和 2 个固定常数(J,Jp)
。求积分的过程并不简单,需要第一步。
我需要找到从 到 的一维积分的根 (
mu
)-pi
pi
A = Integrate [ 1/(exp(E(k; a,b,c,d)-mu)+1 ] dk/2pi = 0.5
,其中
E
是一个由平方根和余弦组成的复杂函数。找到 mu 后,我需要找到
(a,b,c,d)
这个二维积分(与极限相同-pi
)pi
的4D(全局)最小值J
,Jp
提供 ,。result(J,Jp) = Minimum[ Integrate [ I(J,Jp;k,k''; a,b,c,d,mu) ] dk/2pi dk''/2pi ]
复杂的功能I
基本上看起来像
I(J,Jp;k,k''; a,b,c,d,mu) = A(k)*A(k'')*f(a,b,c,d)*[J cos(k+k'') + Jp cos(k-k'')]
mu
我已经完成了寻找假设值的第一步a,b,c,d
,但我不确定如何处理它们的任意值。除了嵌套所有 lambda 函数之外,还有其他方法吗?即便如此,我该如何嵌套 lambda 函数来完成我所需要的?
beta=100.0
a=1.2
b=1.5
c=0.1
d=0.5
findmu = lambda mu: integrate.quad(lambda k:1.0/(2.0*pi)*1.0/(exp(beta*(0.5*(c+d-2.0*(1.0+b)*cos(k)-sqrt(32.0*(b*cos(k/2.0))**2.0+(c-d-2.0*(1-b)*cos(k))**2.0))-mu))+1.0)-0.5/(2.0*pi), -pi,pi)
mu0 = optimize.fsolve(findmu,0.0)
我有用 Mathematica 编写的程序,但是获得最小值需要很长时间,而且有时是错误的。我想尝试将它移植到我目前正在学习的 Python 上。谢谢!
编辑:有关物理系统的更多信息:第一步是通过对系统进行填充来找到量子系统的费米能级。借助费米能级,我们可以找出哪些变分参数使这个 Hartree-Fock 系统的基态能量最小化。