Professional Documents
Culture Documents
Exercici-De-Fisica-Est. - Model Dising en N Dimensions PDF
Exercici-De-Fisica-Est. - Model Dising en N Dimensions PDF
Abstract
S’intenta simular el model d’Ising en dimensió arbitrària mitjançant un model amb ordi-
nador, ja que el model d’Ising no és soluble analíticament en qualsevol dimensió, o almenys la
solució no ha estat trobada. A més, la creació d’aquesta simulació és més senzilla que realitzar
el desenvolupament analític en 2 dimensions.
El model presenta una evolució ’temporal’ dels spins, de manera que és possible analitzar-
lo. També s’analitza el comportament del paràmetre d’ordre, la magnetització, per a observar
les transicions de fase i les temperatures i exponents crítics. Després es compararà amb els
resultats obtinguts analíticament.
Els resultats concorden amb l’esperat, encara que no ha estat possible calcular els exponents
crítics per falta de temps.
1 Introducció
El sistema que considerem és una graella d’spins ordenats en l’espai en N dimensions, de la forma
més senzilla possible, linealment en 1D, rectangularment en 2D, cúbicament en 3D, i així succes-
sivament. De manera que poden ser indexats usant un vector d’N coordenades enteres. A més,
considerarem que té condicions de contorn toroïdals.
Com que no tenim coneixement de quina és la dinàmica dels spins quan es troben agrupats,
usarem l’únic que coneixem, que és la seva energia en funció de la configuració en que es troba el
sistema.
Utilitzant les mateixes definicions que hem usat a classe, l’energia del sistema és:
X X
E=− Jsi sj − Hsi
hi ji i
Per una banda, podríem calcular la funció de partició canònica del sistema sencer i les probabil-
itats de tenir cada possible estat (estat = combinació d’spins). Després, podríem calcular el valor
mig dels spins hsi i, que és una mesura directa de la magnetització. Tot i així, hauríem de trobar
una manera de simplificar els sumatoris sobre tots els estats, perquè tenim un nombre massa gran
D
2L d’estats possibles, on L és el nombre de caselles que s’allarga la graella en cada dimensió, i D
és la dimensió.
Però enlloc d’això usarem l’estratègia de dividir el problema en parts més senzilles. Consider-
arem el cas del subsistema format per un sol spin, mentre mantenim l’entorn fix. I mirarem les
probabilitats que té de canviar d’estat o mantenir-se igual, donat l’entorn actual.
X1
Ei (si ) = − Jsi sj − Hsi
2
hi ji
L’anterior és l’energia ’potencial’ de l’spin en la posició i. Hem de dividir el terme de les parelles
(hi ji) entre 2 perquè en girar-se, l’spin i guanya o perd una certa quantitat d’energia J/2, però
la seva parella també guanya o perd la mateixa quantitat, duplicant el canvi d’energia total en el
sistema, que passa a ser J.
Per a escriure amb més claredat el model, podem considerar un ’camp magnètic efectiu’ (Vi ),
que serà independent del valor de l’spin si :
Ei X1
Vi = = Jsj + H (1)
−si 2
hi ji
1
Ara, podrem aplicar la col·lectivitat canònica al nostre spin i veure quina probabilitat tenim
que el nostre spin sigui ’up’ o ’down’ (donat l’actual entorn).
3. "Llençar una moneda" no equilibrada, amb una probabilitat pup , i una altra pdown . El que
surti dictarà quin valor haurem de donar (+1 o -1) a l’spin.
4. Apliquem repetidament els passos 2 i 3, de manera que els spins del sistema aniran evolucio-
nant.
Podem considerar que aquesta és una simulació del comportament del sistema al llarg del
temps. Per a tenir una bona escala de temps, independent del nombre d’spins (LD ) del sistema,
considerarem que LD repeticions és un ’segon’ o unitat de temps. L’escollim perquè de mitjana en
aquest temps cada spin del sistema haurà tingut una oportunitat de canviar.
Table 1: Taula que dóna els paràmetres dels quals es farà simulació
2
les condicions inicials de la següent simulació. D’aquesta manera, en els gràfics que obtinguem
finalment de magnetització-temperatura, serà com si el nostre sistema vingués de la dreta, de tem-
peratures altes, i es desplacés cap a l’esquerra gradualment a mesura que li disminuïm externament
la temperatura.
En les gràfiques que vénen després s’observen els comportaments mitjans de totes les simulacions
tal com hem especificat prèviament. Resultats que també obtindríem, però de forma exacta,
calculant l’esperança de la magnetització amb el model d’Ising. Així que podrem comparar la seva
semblança.
Per a cada dimensió hem fet un gràfic diferent, per més claredat.
3
Figure 2: Resultat de les simulacions 1-D
4
Figure 4: Resultat de les simulacions 3-D
5
Podem observar molt clarament una transició de fase, en 2, 3 i 4 dimensions, en que la mag-
netització passa a ser espontània, en baixar per sota d’una certa Tc . En 1 dimensió veiem que el
que seria una mena de transició de fase es troba a 0K.
Per a H = 0 el sistema no té direcció preferida per a l’orientació dels spins, de manera que han
estat les fluctuacions qui han decidit si els spins s’alineaven cap a dalt (4D), o cap a baix (1D, 2D,
3D)
També, observem molta més fluctuació en 1 i 2 dimensions, degut a que el nombre d’spins
és molt menor, i suposadament, també degut a que les fluctuacions disminueixen en importància
quan incrementa la dimensió, però amb l’estudi que em fet no es pot provar.
4 Conclusions
Què n’he après?
Que realitzar un estudi complet d’una simulació requereix dedicació, i que els recursos computa-
cionals són més limitats del que voldríem. Especialment, incrementar la dimensió del problema,
tot mantenint les mides en cada direcció, és molt problemàtic. Això és degut a que l’ordre de
l’algorisme que fa la simulació és O(L2D ), és a dir, si tenim 10 caselles de longitud (L = 10),
multipliquem el temps que triga a executar-se l’algorisme per 100 cada vegada que incrementem
en 1 la dimensió.
Què he obtingut?
Un model molt capaç d’emular el model d’Ising, que fins i tot presenta comportaments que
a classe només hem dit de paraula, com la oscil·lació de la magnetització entre up i down, quan
el camp extern és 0, i quan estem a prop de la temperatura crítica, i que, amb algunes de les
simulacions temporals, no presentades en l’exercici, s’intueix com el 0 és un punt d’equilibri in-
estable per a la magnetització, com s’havia dit també de veu. (S’intueix, perquè, en acostar-se la
magnetització a 0, en sistemes d’un gran nombre d’spins, la variació de la magnetització s’alenteix)
És una pregunta que queda oberta si el model ideat és realment és una bona aproximació al
comportament dinàmic real. Hi ha una bona justificació per assegurar que així sigui?
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import random
#FUNCIONS
#Retorna cert amb probabilitat p
def coin(p):
if (not 1 >= p >= 0):
print(’error, no probabilitat normalitzada’)
return (random.random() < p)
#Retorna els elements del veïnat, tipus veïnat és una llista amb els v veins, que per a cada un s’
def retorna_veinat (tipus_veinat, posicio):
veins = list (np.zeros(D))
for i in range(D):
veins[i] = tipus_veinat[i] + posicio[i]
if debugejar == True:
6
print(’veins’, veins)
print(Graella[veins])
return Graella[veins]
7
print (100*(t+1)/maxtime, ’%’)
if imprimeix:
print (’Estat final’, Graella_timelapse[maxtime*steptime])
return Graella_timelapse
return Magnetització
############################
#PARÀMETRES DE LA SIMULACIÓ#
############################
#Paràmetres d’espai i temps
N = 10 #Mida de l’hipercub (L en l’exercici escrit)
D = 4 #Dimensions de l’hipercub
maxtime = 1000 #10*Nombre de intervals de temps fets per la simulació
steptime = int(pow(N,D)/10) #Nombre de passos efectuats en cada interval de temps
#SETUP
#Temps
if (debugejar == True):
maxtime = 1
time = np.array(range(maxtime+1)) #Array amb cada instant de temps
interval = int((maxtime)/20) #Serveix per indicar per quin percentatge de la simulació anem, 20 v
#Espai
#Generem l’hipercub ple d’uns
Mides = N*np.ones(D)
Mides = Mides.astype(int)
Graella = np.ones(Mides)
Caselles = pow(N,D)
#Creem el veïnat de Neumann
adj_1D = np.array([-1,1])
Neumann = np.zeros((D,2*D)) #Coordenada, numeració de les 2D posicions adjacents que estic mirant
for i in range(D):
j = 2*i
Neumann[i, j:j+2] += adj_1D
if debugejar == True:
print(’neumann’, Neumann)
Neumann = list(Neumann.astype(int))
8
#Paràmetres físics d’interacció
J = 1 #Self - interaction
Mag = [0, 0.02, 0.08, 0.2, 0.8] #Camp magnètic
Temp = np.arange(4.1, 0,-0.1) #Temperatura (1/Beta)
###########
#Simulació#
###########
Resultats = np.zeros((np.size(Mag), np.size(Temp)))
i = 0
for H in Mag:
j = np.size(Temp)-1
for T in Temp:
#Graella = reset_down()
magnetització = magnetitzacio_simulacio(False)
Resultats[i,j] = sum(magnetització[10:])/np.size(magnetització[10:])
np.savetxt(’4D.txt’, Resultats)