I(k,k''; J,Jp,a,b,c,d)
4 つの変分パラメーター(a,b,c,d)
と 2 つの固定定数を持つ厄介な不連続 2 次元積分があります(J,Jp)
。積分を見つける手順は簡単ではなく、最初のステップがあります。
からまで
mu
の 1 次元積分のルート ( ) を見つける必要があります。-pi
pi
A = Integrate [ 1/(exp(E(k; a,b,c,d)-mu)+1 ] dk/2pi = 0.5
、ここ
E
で、 は平方根と余弦からなる複雑な関数です。mu を見つけたので、提供された を使用して、
(a,b,c,d)
この 2 次元積分 (極限と同じ)-pi
に対する4D (グローバル) 最小値を見つける必要があります。pi
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
が、それらの任意の値を使用する方法がわかりません。すべてのラムダ関数をネストする以外に別の方法はありますか? それでも、必要なことを達成するためにラムダ関数をネストするにはどうすればよいでしょうか?
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に移植してみたいと思います。ありがとう!
EDIT:物理システムの詳細:最初のステップは、システムの充填を課すことにより、量子システムのフェルミ準位を見つけることです。フェルミ準位を使用すると、このハートリー フォック システムの基底状態エネルギーを最小化する変分パラメーターを見つけることができます。