Einführung in Mathematica XVb

Ritzsches Variationsverfahren

© Jürgen Schnack, 2016/06/02

Problem

Hamiltonoperator gegeben, suchen Grundzustand. Analytische Lösung nicht möglich. 

Idee: raten Grundzustandswellenfunktion. Diese hänge noch von freien Parametern ab. 
Der sich ergebende Energieerwartungswert ist dann eine Funktion dieser Parameter. 
Er kann bezüglich dieser minimiert werden. Dies liefert eine approximative Grundzustandsenergie 
und die zugehörige approximative Grundzustandswellenfunktion.

Hamiltonoperator (HO) und Versuchszustand f

f0[x_,a_]=Exp[-a*x^4];

Nf0[a_]=Integrate[ f0[x,a]^2,{x,-Infinity,Infinity},Assumptions->{Re[a]>0}];

f[x_,a_]=f0[x,a]/(Sqrt[Nf0[a]])

Plot[f[x,1.0],{x,-10,10},PlotRange->{0,1},BaseStyle->{FontFamily->"Helvetica",FontSize->18}]

Energieerwartungswert

E0[a_]=0.5*FullSimplify[-Integrate[f[x,a] D[f[x,a],{x,2}],{x,-Infinity,Infinity},
Assumptions->{Re[a]>0}]+
Integrate[x^2*f[x,a]^2,{x,-Infinity,Infinity},
Assumptions->{Re[a]>0}]]

Der Energieerwartungswert ist eine Funktion der freien Parameter, in diesem Fall von a!

Energiefunktion darstellen

Plot[E0[a],{a,0,1},
BaseStyle->{FontFamily->"Helvetica",FontSize->18}]

Minimum der Energie ist eine Näherung für die wahre Grundzustandsenergie!

Gradientenverfahren

a0=1.0;η=0.01;
For[i=0,i<500,i++,
a1=a0-η*D[E0[a],a]/.{a->a0};
Print[a1,"  ",E0[a1]];
a0=a1]

Hamiltonoperator (HO) und exakter Versuchszustand g

g0[x_,a_]=Exp[-a*x^2];

Ng0[a_]=Integrate[ g0[x,a]^2,{x,-Infinity,Infinity},Assumptions->{Re[a]>0}];

g[x_,a_]=g0[x,a]/(Sqrt[Ng0[a]])

Plot[g[x,1.0],{x,-10,10},PlotRange->{0,1},BaseStyle->{FontFamily->"Helvetica",FontSize->18}]

Energieerwartungswert

Eg0[a_]=0.5*FullSimplify[-Integrate[g[x,a] D[g[x,a],{x,2}],{x,-Infinity,Infinity},
Assumptions->{Re[a]>0}]+
Integrate[x^2*g[x,a]^2,{x,-Infinity,Infinity},
Assumptions->{Re[a]>0}]]

Der Energieerwartungswert ist eine Funktion der freien Parameter, in diesem Fall von a!

Energiefunktion darstellen

Plot[Eg0[a],{a,0,1},
BaseStyle->{FontFamily->"Helvetica",FontSize->18}]

Minimum der Energie ist eine Näherung für die wahre Grundzustandsenergie!

Gradientenverfahren

a0=1.0;η=0.01;
For[i=0,i<500,i++,
a1=a0-η*D[Eg0[a],a]/.{a->a0};
Print[a1,"  ",Eg0[a1]];
a0=a1]

Schlussfolgerung

Im konkreten Fall war die Näherungsenergie 0.585 im Vergleich zum exakten Ergebnis von 0.5.
Das ist noch nicht so toll.


Man kann recht gute Ergebnisse erzielen, wenn man die Versuchfunktion etwas flexibler gestaltet.