Modelo de Potts - 2D: mudanças entre as edições

De Física Computacional
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
Linha 28: Linha 28:
a) Escolha um estado inicial <math>x_0</math>;
a) Escolha um estado inicial <math>x_0</math>;
b) Coloque <math>t=0</math>
b) Coloque <math>t=0</math>
2. Itere
2. Itere
a) Gere um estado candidato aleatório <math>x'</math> de acordo <math>g(x'|x_t)</math>
a) Gere um estado candidato aleatório <math>x'</math> de acordo <math>g(x'|x_t)</math>
b) Calcule a probabilidade de aceitação <math>A(x',x_t) = min \left/(1,\frac{P(x')}{P(x_t)} \frac{g(x_t | x'}{x'|x_t} \right)</math>
b) Calcule a probabilidade de aceitação <math>A(x',x_t) = min \left/(1,\frac{P(x')}{P(x_t)} \frac{g(x_t | x'}{x'|x_t} \right)</math>
c) Aceite ou rejeite:
c) Aceite ou rejeite:
1) Gere um número aleatório uniforme <math>u \in [0,1]</math>;
1) Gere um número aleatório uniforme <math>u \in [0,1]</math>;
2) E se <math>u\leq A(x',x_t)</math>, aceite o novo estado e defina <math>x_{t+1}=x'</math>;
2) E se <math>u\leq A(x',x_t)</math>, aceite o novo estado e defina <math>x_{t+1}=x'</math>;
3) E se <math>u>A(x',x_t)</math>, rejeite o novo estado e copie o estado antigo para frente <math>x_{t+1}=x_t</math>;
3) E se <math>u>A(x',x_t)</math>, rejeite o novo estado e copie o estado antigo para frente <math>x_{t+1}=x_t</math>;
4) Incremente: coloque t = t + 1
4) Incremente: coloque t = t + 1


Em nosso caso, a distribuição <math>\frac{A(x,x')}{A(x',x)}</math> é <math>e^{-\beta \Delta E}</math>, onde <math>\Delta E=E_{x'} - E_{x}</math>  
Em nosso caso, a distribuição <math>\frac{A(x,x')}{A(x',x)}</math> é <math>e^{-\beta \Delta E}</math>, onde <math>\Delta E=E_{x'} - E_{x}</math>.


=Resultados=
=Resultados=

Edição das 13h27min de 17 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 q da seguinte forma: θn=2πnq. A quantidade θn nos fornece as possíveis orientações para os spins. Os valores que n pode assumir são n=0,1,2,...,q1. Dessa forma, um Modelo de Potts bidimensionaç com q=10 possui uma rede bidimensional de spins com 10 orientações diferentes.

O Hamiltoniano de interação, na ausência de campo magnético, pode ser escrito como

Hp=J(i,j)δ(si,sj)

onde J é a constante de acoplamento que determina a intensidade da interação e δ(si,sj) é a delta de Kronecker, definida como 0 se si=sj e 1 se sisj.

Relação com o Modelo de Ising

O Modelo de Ising é obtido quando tomamos q=2 na expressão para θn.

O Hamiltoniano de Ising pode ser escrito como o Hamiltoniano do Potts mais uma constante aditiva HI=Hp+(i,j)J2=J(i,j)δ(si,sj)+(i,j)J2=J2(i,j)(2δ(si,sj)1)

Se incluírmos o campo magnético, o Hamiltoniado fica Hp=J(i,j)δ(si,sj)i1βhisi

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. Inicialize a) Escolha um estado inicial x0; b) Coloque t=0

2. Itere a) Gere um estado candidato aleatório x de acordo g(x|xt)

b) Calcule a probabilidade de aceitação A(x,xt)=min/(1,P(x)P(xt)g(xt|xx|xt)

c) Aceite ou rejeite:

1) Gere um número aleatório uniforme u[0,1];

2) E se uA(x,xt), aceite o novo estado e defina xt+1=x;

3) E se u>A(x,xt), rejeite o novo estado e copie o estado antigo para frente xt+1=xt;

4) Incremente: coloque t = t + 1

Em nosso caso, a distribuição A(x,x)A(x,x) é eβΔE, onde ΔE=ExEx.

Resultados

[[Arquivo: <arquivo> |thumb|right|500px| Simulação com o algoritmo de Metropolis para T=1K.]]

Códigos utilizados

Metropolis - Potts 2D

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.