Generieren von Ising-Modell-Steady-State-Konfigurationen
Was ist der effizienteste Weg, um stationäre Konfigurationen des Ising-Modells zu simulieren? Ich bin nur daran interessiert, eine große Anzahl zufälliger stationärer Konfigurationen des 1D Ising-Modells (mit homogenen Kopplungskonstanten) zu haben. Ein paar Ideen kamen mir in den Sinn:
- Brute-Force-Probenahme. Da das Ising-Modell in 1D und 2D genau lösbar ist, gibt es genaue Ausdrücke für die Wahrscheinlichkeiten jedes Zustands. Zufallsstichprobe über einen Satz von$2^N$ wird wahrscheinlich Speicherprobleme für kleine verursachen $N$ bereits.
- Monte-Carlo-Dynamik. Man könnte die üblichen Monte-Carlo-Algorithmen (z. B. Glauberdynamik) in zufälligen Anfangszuständen ausführen und warten, bis das System zum thermischen Gleichgewicht konvergiert. Dies scheint jedoch ineffizient zu sein, wenn Sie nicht an der Dynamik interessiert sind und nur stationäre Konfigurationen wünschen.
- Verwendung der Zustandsdichte. Man könnte auch zuerst zufällig die Energie des Systems abtasten$P(E) \sim N(E) \exp(-\beta E)$, wo $N(E)$ist die Zustandsdichte, die (zumindest numerisch) berechenbar ist. Dann erzeugt man mit dieser Energie eine zufällige Konfiguration, z. B. unter Verwendung eines Spin-Flip-Algorithmus, bei dem einzelne Spins umgedreht werden, um die Energie zu erhöhen / zu verringern, bis sie mit der Zielenergie übereinstimmt. Ich bin mir aber nicht sicher, ob die auf diese Weise erhaltenen Konfigurationen statistisch der Boltzmann-Verteilung folgen.
Anmerkung: In 1D gibt es auch einen genauen Ausdruck für die Ising-Zustandsdichte. $g(E(k)) = 2 \binom{N-1}{k}$ mit $E(k) = -N + 2k + 1$. Siehe diese andere Frage: Ising Modelldichte von Zuständen .
Irgendwelche Ideen, wie man das am besten angehen kann?
Antworten
Für das eindimensionale Modell ist die mit Abstand effizienteste Methode zur Simulation des Ising-Modells die Verwendung einer Markov-Kette $\{-1,1\}$, wobei jeweils ein Spin erzeugt wird, abhängig von den Werten, die von den vorherigen Spins angenommen wurden. Beachten Sie auch, dass Sie auf diese Weise genau aus der Gibbs-Verteilung ohne Annäherung abtasten (im Gegensatz zu einem Monte-Carlo-Ansatz).
Lassen Sie mich der Einfachheit halber das Modell mit freier Randbedingung betrachten, dh das Modell mit Hamiltonian $$ \beta\mathcal{H} = - \beta\sum_{i=2}^N \sigma_{i-1}\sigma_i . $$(Sie können auch ein Magnetfeld hinzufügen, aber ich werde es hier nicht tun, um die Darstellung zu vereinfachen). Dann,$\sigma_1$ entspricht $+1$ oder $-1$ mit Wahrscheinlichkeit $\tfrac12$durch Symmetrie. Darüber hinaus für jeden$k\geq 2$, $$ \mathrm{Prob}(\sigma_k=\sigma_{k-1} \,|\, \sigma_1, \dots, \sigma_{k-1}) = \mathrm{Prob}(\sigma_k=\sigma_{k-1}) = \frac{e^{\beta}}{e^{\beta} + e^{-\beta}} = \frac{1}{1+e^{-2\beta}}. $$ Nennen wir diese Wahrscheinlichkeit $p$.
Zusammenfassen:
- Sie probieren $\sigma_1$: es ist $+1$ mit Wahrscheinlichkeit $\tfrac12$ und $-1$ mit Wahrscheinlichkeit $\tfrac12$.
- Gegeben $\sigma_1$, Sie setzen $\sigma_2 = \sigma_1$ mit Wahrscheinlichkeit $p$ und $\sigma_2 = -\sigma_1$ mit Wahrscheinlichkeit $1-p$.
- Gegeben $\sigma_2$, Sie setzen $\sigma_3 = \sigma_2$ mit Wahrscheinlichkeit $p$ und $\sigma_3 = -\sigma_2$ mit Wahrscheinlichkeit $1-p$.
- und so weiter...
Dies ist sehr einfach zu implementieren und extrem schnell (natürlich zu berechnen $p=1/(1+e^{-2\beta})$nur einmal). Dann wird die meiste Zeit von der Pseudozufallszahlengenerierung benötigt. Auf diese Weise können Sie problemlos Ketten beliebig großer Länge simulieren.
(Siehe auch diese Antwort für einen anderen Gesichtspunkt der Beziehung zwischen eindimensionalen Modellen und Markov-Ketten.)
Erklärung der Formel für $p$.
Die einfachste Art zu sehen, warum die Formel für $p$Wenn Sie mit den Darstellungen vertraut sind, verwenden Sie entweder die Zufallscluster- oder die Hochtemperaturdarstellungen des Ising-Modells (sie werden beispielsweise in den Abschnitten 3.7.3 und 3.10.6 in diesem Buch beschrieben ). .
Wenn Sie mit diesen Darstellungen nicht vertraut sind, lassen Sie mich versuchen, ein direktes Argument zu liefern.
Lassen $s_1,\dots,s_N \in \{-1,1\}$ und schreibe $s=(s_1,\dots,s_{k-1},s_k,\dots,s_N)$ und $s'=(s_1,\dots,s_{k-1},-s_k,\dots,-s_N)$ (das heißt, die Konfiguration $s'$ wird aus der Konfiguration erhalten $s$ durch Umdrehen der Drehungen bei $k, k+1, \dots N$).
Jetzt, $$ \frac{{\rm Prob}(\sigma = s)}{{\rm Prob}(\sigma = s')} = \frac{\exp\bigl( -\beta \mathcal{H}(s) \bigr)}{\exp\bigl( -\beta\mathcal{H}(s') \bigr)} = \exp(2\beta\, s_{k-1}s_{k}). $$ Speziell, $$ \frac{{\rm Prob}(\sigma_k=\sigma_{k-1})}{{\rm Prob}(\sigma_k = -\sigma_{k-1})} = \exp(2\beta). $$ Aber das impliziert das $$ {\rm Prob}(\sigma_k=\sigma_{k-1}) = e^{2\beta}\, {\rm Prob}(\sigma_k = -\sigma_{k-1}) = e^{2\beta} \bigl( 1 - {\rm Prob}(\sigma_k = \sigma_{k-1}) \bigr), $$ und deshalb $$ (1+e^{2\beta})\, {\rm Prob}(\sigma_k=\sigma_{k-1}) = e^{2\beta}, $$ von dem die Formel für $p$ folgt sofort.