私は厄介な不連続2次元積分I(k,k''; J,Jp,a,b,c,d)
を持っており、4つの変分パラメータ(a,b,c,d)
と2固定定数(J,Jp)
。積分を求める手順は簡単ではなく、最初のステップがあります。関数I(a、b、c、d)の積分の4次元最小値(a、b、c、d)を求める
私は
E
が平方根と余弦からなる複雑な関数である、
-pi
からpi
A = Integrate [ 1/(exp(E(k; a,b,c,d)-mu)+1 ] dk/2pi = 0.5
に一次元積分にルート(mu
)を見つける必要があります。がMUを発見したが、私は
J
、Jp
供給されると、この二次元積分(同じ-pi
pi
に限界)に4D(グローバル)最小(a,b,c,d)
値を見つける必要があります。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'')]
のように見える私はa,b,c,d
の仮定値とmu
を見つけるための最初のステップを行ってますが、任意について行くには方法がわからないよいますそれらの値。すべてのラムダ関数を入れ子にする以外の方法がありますか?それでも、私が必要とするものを達成するためにラムダ関数を入れ子にする方法はありますか?
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:物理システムに関する詳細:最初のステップは、システムの充填を課すことによって量子システムのフェルミレベルを見つけることです。フェルミ準位を用いれば、このHartree-Fockシステムの基底状態エネルギーを最小にする変分パラメータを見つけることができます。
(1)あなたは、方程式の両方を与えることができますか?私はEが何であるかを見ることができると思う - あなたがfindmuの行からaを欠いていると思う - しかし、(2)Eのように見えることが時々複雑になる。あれは正しいですか? – DSM
Eは時には複雑かもしれませんが、最初のステップは基本的にEが複雑にならないような制約を課しています。すべてのパラメータも実際のものです(実際には物理システムを解決しようとしています)。私は元の投稿をEの実際の形を含むように編集しました。見て分かるように、それはかなり複雑です。私が最小化する必要のある関数は、Eの二乗されたバージョンに[J cos(k + k '')+ Jp cos(k-k ")]を掛けたものと考えることができます – CKtalon