Modelo de Potts - 2D: mudanças entre as edições
(57 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 48: | Linha 48: | ||
a) Geramos um número aleatório uniforme <math>u \in [0,1]</math>; | a) Geramos um número aleatório uniforme <math>u \in [0,1]</math>; | ||
b) Se <math>u\leq A(x',x_t)</math>, ou seja <math>u\leq e^{-\beta (E_{x'} - | b) Se <math>u\leq A(x',x_t)</math>, ou seja <math>u\leq e^{-\beta (E_{x'} - E_{x_t})}</math>, aceitamos o novo estado e definimos <math>x_{t+1}=x'</math>; | ||
c) E se <math>u>A(x',x_t)</math>, | c) E se <math>u>A(x',x_t)</math>, ou seja <math>u\leq e^{-\beta (E_{x'} - E_{x_t})}</math>, rejeitamos o novo estado e continuamos com o estado antigo para frente <math>x_{t+1}=x_t</math>; | ||
d) | d) Ao final desse processo, voltamos para o passo 2). | ||
=Resultados das simulações= | =Resultados das simulações= | ||
Definimos um Monte Carlo Step (MCS) como sendo o tempo em que a rede bidimensional com <math>L^2</math> spins é percorrida pelo algoritmo. Ao final de <math>L^2</math> flips de spin (seja com probabilidade <math>1</math> ou com probabilidade <math>\exp(-\beta \Delta E)</math>), contamos um MCS. Além disso, em todas as simulações, utilizamos <math>T=1</math> em unidades de <math>k_B</math>. | Definimos um Monte Carlo Step (MCS) como sendo o tempo em que a rede bidimensional quadrada com <math>L^2</math> spins é percorrida pelo algoritmo. Ao final de <math>L^2</math> flips de spin (seja com probabilidade <math>1</math> ou com probabilidade <math>\exp(-\beta \Delta E)</math>), contamos um MCS. Além disso, em todas as simulações, utilizamos <math>T=1</math> em unidades de <math>k_B</math>. | ||
==Energia== | Em todas as simulações, o estado inicial utilizado foi uma rede quadrada de tamanho <math>L</math> com spins aleatórios. Isso justifica a diferença na energia inicial de cada simulação. Como os spins eram diferentes (ordenados de forma aleatória), a energia inicial também era diferente para cada simulação. | ||
==Energia (T=1)== | |||
{| class="wikitable" style="text-align: center;" | {| class="wikitable" style="text-align: center;" | ||
!colspan="2"|Energia em cada MCS para Q indo de 2 até 10 e L = 64 utilizando o algoritmo de Metropolis. | !colspan="2"|Energia em cada MCS para Q indo de 2 até 10 e L = 64 utilizando o algoritmo de Metropolis. | ||
|- | |- | ||
|[[Arquivo: | |[[Arquivo: Q_2_T_12.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 2, L = 64 e T = 1.|600px]] | ||
|[[Arquivo: Q_2_T_13.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 2, L = 64 e T = 1.|600px]] | |||
|[[Arquivo: | |||
|- | |- | ||
|[[Arquivo: Q_3_T_12.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 3, L = 64 e T = 1.|600px]] | |||
|[[Arquivo: | |[[Arquivo: Q_3_T_13.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 3, L = 64 e T = 1.|600px]] | ||
|- | |- | ||
|[[Arquivo: Q_7_T_12.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 7, L = 64 e T = 1.|600px]] | |||
|[[Arquivo: | |[[Arquivo: Q_7_T_13.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 7, L = 64 e T = 1.|600px]] | ||
|} | |} | ||
== | Na primeira figura, vemos a série temporal da energia para <math>Q=2</math> e <math>T=1</math>, enquanto na segunda figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -700. | ||
Na terceira figura, vemos a série temporal da energia para <math>Q=3</math> e <math>T=1</math>, enquanto na quarta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -1850. | |||
Na quinta figura, vemos a série temporal da energia para <math>Q=7</math> e <math>T=1</math>, enquanto na sexta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -2900. | |||
==Energia (T=2)== | |||
{| class="wikitable" style="text-align: center;" | {| class="wikitable" style="text-align: center;" | ||
!colspan="2"| | !colspan="2"|Energia em cada MCS para Q indo de 2 até 10 e L = 64 utilizando o algoritmo de Metropolis. | ||
|- | |- | ||
|[[Arquivo: | |[[Arquivo: Q21.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 2, L = 64 e T = 2.|600px]] | ||
|[[Arquivo: | |[[Arquivo: Q22.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 2, L = 64 e T = 2.|600px]] | ||
|- | |- | ||
|[[Arquivo: | |[[Arquivo: Q31.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 3, L = 64 e T = 2.|600px]] | ||
|[[Arquivo: | |[[Arquivo: Q32.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 3, L = 64 e T = 2.|600px]] | ||
|- | |- | ||
|[[Arquivo: Q71.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 7, L = 64 e T = 2.|600px]] | |||
|[[Arquivo: | |[[Arquivo: Q72.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 7, L = 64 e T = 2.|600px]] | ||
|[[Arquivo: | |||
|} | |} | ||
Na primeira figura, vemos a série temporal da energia para <math>Q=2</math> e <math>T=2</math>, enquanto na segunda figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -5000. | |||
Na terceira figura, vemos a série temporal da energia para <math>Q=3</math> e <math>T=2</math>, enquanto na quarta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -2850. | |||
Na quinta figura, vemos a série temporal da energia para <math>Q=7</math> e <math>T=2</math>, enquanto na sexta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -3400. | |||
É possível observar que para <math>T = 2</math> os valores de energia média ficaram mais dispersos que em relação à <math>T = 1</math>. Além disso, há uma grande diferença entre os resultados de <math>T = 2</math> e <math>T = 1</math> para <math>Q = 2</math>. Vemos que para uma temperatura mais baixa, a energia média converge para um valor mais bem definido. | |||
=Códigos utilizados= | =Códigos utilizados= |
Edição atual tal como às 19h51min de 18 de outubro de 2022
O Modelo
Modelo de Potts pode ser considerado uma generalização do Modelo de Ising. Enquanto no Ising, os spins podem assumir valores 1 ou -1, no Modelo de Potts, os spins podem assumir valores que dependem de uma variavél da seguinte forma: . A quantidade nos fornece as possíveis orientações para os spins. Os valores que pode assumir são . Dessa forma, um Modelo de Potts bidimensional com possui uma rede bidimensional de spins com 10 orientações diferentes. Nas figuras abaixo podemos ver três possíveis orientações dos spins.
O Hamiltoniano de interação, na ausência de campo magnético, pode ser escrito como
onde é a constante de acoplamento que determina a intensidade da interação e é a delta de Kronecker, definida como 1 se e 0 se .
Uma característica importante desse modelo é que as orientações em si não são relevantes, uma vez que o Hamiltoniano é definido por uma Delta de Kronecker. A única informação relevante é se os spins são iguais ou diferentes. Conforme veremos adiante, para o caso de , recaímos no conhecido Modelo de Ising.
Se incluirmos o campo magnético, o Hamiltoniado de Potts fica
onde e é o campo magnético.
Relação com o Modelo de Ising
O Modelo de Ising é obtido quando tomamos na expressão para . Para que possamos reescrever o Hamiltoniano de Potts em uma forma semelhante ao Hamiltoniano de Ising, vamos somar uma constante aditiva, de modo que o Hamiltoniano fica
Vemos que se os spins são iguais, obtemos e se os spins são diferentes, obtemos . No Modelo de Ising, nós tínhamos e , respectivamente. Uma consequência desse fator meio de diferença é que a temperatura crítica para o Modelo de Potts, para , é metade da temperatura crítica do Ising () e os nos histogramas de energia também são metade.
Algoritmo de Metropolis
Vamos implementar o Modelo de Potts utilizando o algoritmo de Metropolis.
O algoritmo de Metropolis é um método de Cadeia de Markov Monte Carlo (MCMC) para obter amostras aleatórias a partir de uma distribuição de probabilidade da qual a amostragem direta é difícil. O procedimento para a implementação do algoritmo é apresentado abaixo.
1) Escolhemos um estado inicial , que em nosso caso será um spin orientado em uma direção dada por .
2) Através de um sorteio aleatório, com , escolhemos um candidato .
3) Calculamos a prababilidade de aceitação desse candidato atráves de , onde
4) E então aceitamos ou rejeitamo este novo candidato da seguinte forma:
a) Geramos um número aleatório uniforme ;
b) Se , ou seja , aceitamos o novo estado e definimos ;
c) E se , ou seja , rejeitamos o novo estado e continuamos com o estado antigo para frente ;
d) Ao final desse processo, voltamos para o passo 2).
Resultados das simulações
Definimos um Monte Carlo Step (MCS) como sendo o tempo em que a rede bidimensional quadrada com spins é percorrida pelo algoritmo. Ao final de flips de spin (seja com probabilidade ou com probabilidade ), contamos um MCS. Além disso, em todas as simulações, utilizamos em unidades de .
Em todas as simulações, o estado inicial utilizado foi uma rede quadrada de tamanho com spins aleatórios. Isso justifica a diferença na energia inicial de cada simulação. Como os spins eram diferentes (ordenados de forma aleatória), a energia inicial também era diferente para cada simulação.
Energia (T=1)
Energia em cada MCS para Q indo de 2 até 10 e L = 64 utilizando o algoritmo de Metropolis. | |
---|---|
Na primeira figura, vemos a série temporal da energia para e , enquanto na segunda figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -700.
Na terceira figura, vemos a série temporal da energia para e , enquanto na quarta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -1850.
Na quinta figura, vemos a série temporal da energia para e , enquanto na sexta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -2900.
Energia (T=2)
Energia em cada MCS para Q indo de 2 até 10 e L = 64 utilizando o algoritmo de Metropolis. | |
---|---|
Na primeira figura, vemos a série temporal da energia para e , enquanto na segunda figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -5000.
Na terceira figura, vemos a série temporal da energia para e , enquanto na quarta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -2850.
Na quinta figura, vemos a série temporal da energia para e , enquanto na sexta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -3400.
É possível observar que para os valores de energia média ficaram mais dispersos que em relação à . Além disso, há uma grande diferença entre os resultados de e para . Vemos que para uma temperatura mais baixa, a energia média converge para um valor mais bem definido.
Códigos utilizados
O código foi escrito em Fortran.
Referências
D. P. Landau, K. Binder. A Guide Monte Carlo Simulations in Statistical Physics. Cambridge University. New York. 2000.
L. M. Barone, E. Marinari, G. Organtini, F. Ricci-Tersengui. Scientific Programming: C-Language, Algorithms and Models in Science. World Scientific. Singapore. 2013.