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

De Física Computacional
Ir para navegação Ir para pesquisar
Sem resumo de edição
 
(31 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 2: Linha 2:


=Descrição do modelo=
=Descrição do modelo=
No modelo de Potts a <math>q</math> estados são considerados <math>N</math> spins <math>s_i</math> dispostos em uma rede, geralmente bidimesnsional retangular, cada spin podendo estar em um dos <math>q</math> estados possíveis.
 
No modelo de Potts a <math>q</math> estados são considerados <math>N</math> spins <math>s_i</math> dispostos em uma rede, geralmente bidimensional retangular, cada spin podendo estar em um dos <math>q</math> estados possíveis.


O Hamiltoniano desse sistema é
O Hamiltoniano desse sistema é
Linha 18: Linha 19:
  <math>H_I = H_p + \sum_{(i,j)}\frac{J}{2} = -J\sum_{(i,j)} \delta(s_i,s_j) + \sum_{(i,j)}\frac{J}{2} = -\frac{J}{2}\sum_{(i,j)} (2\delta(s_i,s_j) - 1) </math>
  <math>H_I = H_p + \sum_{(i,j)}\frac{J}{2} = -J\sum_{(i,j)} \delta(s_i,s_j) + \sum_{(i,j)}\frac{J}{2} = -\frac{J}{2}\sum_{(i,j)} (2\delta(s_i,s_j) - 1) </math>


nesse caso os spins <math>s_i</math> e <math>s_j</math> tem apenas dois valores possíveis e
nesse caso os spins <math>s_i</math> e <math>s_j</math> têm apenas dois valores possíveis e


  <math> 2\delta(s_i,s_j) - 1 = \begin{cases}
  <math> 2\delta(s_i,s_j) - 1 = \begin{cases}
Linha 25: Linha 26:
  \end{cases}</math>
  \end{cases}</math>


logo considerando como valores possíveis para os spins <math>{s_i,s_j}</math> como <math>-1</math> ou <math>1</math> encontramos
logo considerando como valores possíveis para os spins <math>\{s_i,s_j\}</math> como <math>-1</math> ou <math>1</math> encontramos


  <math>H_I = H_p + \sum_{(i,j)}\frac{J}{2} = -\frac{J}{2}\sum_{(i,j)} s_i s_j </math>
  <math>H_I = H_p + \sum_{(i,j)}\frac{J}{2} = -\frac{J}{2}\sum_{(i,j)} s_i s_j </math>
Linha 31: Linha 32:
=Simulação Monte Carlo=
=Simulação Monte Carlo=


A abordagem utilizada para simular por Monte Carlo um sistema seguindo o modelo de Potts com <math>q</math> pequeno é naturalmente similar àquela utilizada para o modelo de Ising, seguindo o algoritmo de Metropolis. Entretanto para valores mais elevados de <math>q</math> esse algoritmo se torna ineficiente e o sistema demora um tempo muito longo para entrar em equilíbrio térmico.
[[Arquivo:AnimationHB-Q10-L256-T0.5.gif|thumb|right|500px|Simulação Monte Carlo com algoritmo do banho térmico para uma rede retangular <math>256\times 256</math> com <math>q=10</math> e <math>T=0.5\text{J}</math> utilizando uma temperatura inicial infinita: podemos notar a formação de clusters de spins em baixa temperatura.]]
[[Arquivo:AnimationHB-Q10-L256-T1.0.gif|thumb|right|500px|Simulação Monte Carlo com algoritmo do banho térmico para uma rede retangular <math>256\times 256</math> com <math>q=10</math> e <math>T=1.0\text{J}</math>: em alta temperatura, a formação de clusters não é observada.]]
 
A abordagem utilizada para simular por Monte Carlo um sistema seguindo o modelo de Potts com <math>q</math> pequeno é, naturalmente, similar àquela utilizada para o modelo de Ising: seguindo o algoritmo de Metropolis. Entretanto para valores mais elevados de <math>q</math> esse algoritmo se torna ineficiente e o sistema demora um tempo muito longo para entrar em equilíbrio térmico.


==Eficiência do algoritmo de Metropolis==
==Eficiência do algoritmo de Metropolis==


Para entender porque o algoritmo de Metropolis não é otimo para uma simulação Monte Carlo de um sistema seguindo o modelo de Potts devemos nos lembrar como ele resolve o problema de amostragem por importância.
Para entender porque o algoritmo de Metropolis não é otimo para uma simulação Monte Carlo de um sistema seguindo o modelo de Potts, devemos relembrar como ele resolve o problema de amostragem por importância.


As condições necessárias para a amostragem por importância são:
As condições necessárias para a amostragem por importância são:
Linha 49: Linha 53:
onde <math>Z</math> é a função de partição e <math>\beta = \frac{1}{k_B T}</math> é o inverso da temperatura.
onde <math>Z</math> é a função de partição e <math>\beta = \frac{1}{k_B T}</math> é o inverso da temperatura.


Considerando a probabilidade de transição de estado como o produto de uma probabilidade de seleção de um novo estado <math>g(\mu \rightarrow \nu)</math>, a probabilidade de considerar <math>\nu</math> como o próximo estado na cadeia dado o estado atual <math>\mu</math>, e uma probabilidade de aceitação de transição <math>A(\mu \rightarrow \nu)</math>
Considerando a probabilidade de transição de estado <math>P(\mu \rightarrow \nu)</math> como o produto de uma probabilidade de seleção de um novo estado <math>g(\mu \rightarrow \nu)</math> (a probabilidade de considerar <math>\nu</math> como o próximo estado na cadeia dado o estado atual <math>\mu</math>) e uma probabilidade de aceitação de transição <math>A(\mu \rightarrow \nu)</math>


  <math>P(\mu \rightarrow \nu) = g(\mu \rightarrow \nu)A(\mu \rightarrow \nu)</math>
  <math>P(\mu \rightarrow \nu) = g(\mu \rightarrow \nu)A(\mu \rightarrow \nu)</math>
Linha 55: Linha 59:
o algoritmo de Metropolis atribui um valor fixo e uniforme para a probabilidade de seleção
o algoritmo de Metropolis atribui um valor fixo e uniforme para a probabilidade de seleção


  <math>g(\mu \rightarrow \nu) = \frac{1}{N} \quad \forall \mu, \nu</math>
  <math>g(\mu \rightarrow \nu) = \frac{1}{N}, \quad \forall \mu, \nu</math>


que claramente garante a ergodicidade, restando apenas uma condição sobre os valores das probabilidades de aceitação:
que claramente garante a ergodicidade, restando apenas uma condição sobre os valores das probabilidades de aceitação:
Linha 70: Linha 74:
[[Arquivo:ExemploPottsMetropolis1.png|thumb|upright=1.2|right|Exemplo: rede bidimensional retangular com <math>q=100</math>. Um spin cercado por vizinhos de valores diferentes, a probabilidade de o sistema trocar para um estado de menor energia é <math>4/100=4%</math>, logo teremos que esperar em média <math>25</math> passos para a simulação avançar.]]
[[Arquivo:ExemploPottsMetropolis1.png|thumb|upright=1.2|right|Exemplo: rede bidimensional retangular com <math>q=100</math>. Um spin cercado por vizinhos de valores diferentes, a probabilidade de o sistema trocar para um estado de menor energia é <math>4/100=4%</math>, logo teremos que esperar em média <math>25</math> passos para a simulação avançar.]]


O problema desse algoritmo para um modelo como o de Potts que admite um número elevado de estados possíveis para o spin é evidenciado quando consideramos um sistema à baixa temperatura. Para altas temperaturas a probabilidade de aceitação é igual à <math>1</math> ou suficientemente alta por conta de um <math>\beta</math> pequeno tornando algoritmo eficiente, entretanto à baixa temperatura os spins tendem à se alinhar com seus vizinhos constituindo o fenômeno do ferromagnetismo. Se imaginarmos um spin no estado <math>s_i</math> cercado por vizinhos de valores diferentes, seguindo o algoritmo de Metropolis, seja qual for o valor <math>s_i'</math> selecionado uniformemente para o novo estado desse spin a probabilidade de aceitação é <math>A(\mu \rightarrow \nu) = 1</math> pois essa troca de spin vai diminuir a enrgia do sistema (quando <math>s_i'</math> for estado de um spin vizinho) ou no máximo manter constante a energia do sistema (<math>s_i'</math> continua sendo diferente de todos os spins vizinhos). Com isso, temos um probabilidade de o sistema trocar para um estado de menor energia de <math>\frac{N_v}{q}</math>, onde <math>N_v</math> é número de vizinhos mais próximos de cada spin, aumentando muito o tempo necessário para o sistema entrar em equilíbrio.
O problema desse algoritmo para um modelo como o de Potts, que admite um número elevado de estados possíveis para o spin, é evidenciado quando consideramos um sistema a baixas temperaturas. Para altas temperaturas, a probabilidade de aceitação é unitária ou suficientemente alta por conta de um <math>\beta</math> pequeno tornando o algoritmo eficiente. Entretanto a baixas temperaturas, os spins tendem a se alinhar com seus vizinhos constituindo o fenômeno do ferromagnetismo. Se imaginarmos um spin no estado <math>s_i</math> cercado por vizinhos de valores diferentes, seguindo o algoritmo de Metropolis, seja qual for o valor <math>s_i'</math> selecionado uniformemente para o novo estado desse spin a probabilidade de aceitação é <math>A(\mu \rightarrow \nu) = 1</math> pois essa troca de spin vai diminuir a energia do sistema (quando <math>s_i'</math> for estado de um spin vizinho) ou, no máximo, manter constante a energia do sistema (<math>s_i'</math> continua sendo diferente de todos os spins vizinhos). Com isso, temos uma probabilidade <math>\frac{z}{q}</math> de o sistema trocar para um estado de menor energia, onde <math>z</math> é número de coordenação da rede, aumentando muito o tempo necessário para o sistema entrar em equilíbrio.


De maneira similar, se um spin tem o mesmo estado de um de seus vizinhos teremos <math>N_v</math> novos estados <math>\nu</math> com taxa de aceitação unitária enquanto todos outros <math>q-N_v</math> estados terão uma taxa de aceitação muito baixa (dependendo da temperatura) resultando em uma probabilidade de transição pouco maior que <math>N_v/q</math> novamente atrasando a simulação.
De maneira similar, se um spin tem o mesmo estado de um de seus vizinhos, teremos <math>z</math> novos estados <math>\nu</math> com taxa de aceitação unitária enquanto todos outros <math>q-z</math> estados terão uma taxa de aceitação muito baixa (dependendo da temperatura) resultando em uma probabilidade de transição pouco maior que <math>z/q</math>, novamente atrasando a simulação.


==Algoritmo do banho térmico==
==Algoritmo do banho térmico==


Uma solução possível para o problema apresentado é utilizar o algoritmo de banho térmico que também troca o estado de um spin por vez mas utiliza uma técnica diferente para satisfazer a condição do balanço detalhado. Diferentemente do algoritmo de Metropolis onde a probabilidade de seleção <math>g(\mu \rightarrow \nu)</math> é uniforme e a probabilidade de aceitação <math>A(\mu \rightarrow \nu)</math> obedece uma lei que resulta em uma probabilidade de transição <math>P(\mu \rightarrow \nu)</math> que respeita a condição, no algoritmo do banho térmico a taxa de aceitação é unitária
Uma solução possível para o problema apresentado é utilizar o algoritmo de banho térmico, que também troca o estado de um spin por vez mas utiliza uma técnica diferente para satisfazer a condição do balanço detalhado. Diferentemente do algoritmo de Metropolis, onde a probabilidade de seleção <math>g(\mu \rightarrow \nu)</math> é uniforme e a probabilidade de aceitação <math>A(\mu \rightarrow \nu)</math> obedece uma dada lei resultando em uma probabilidade de transição <math>P(\mu \rightarrow \nu)</math> que respeita a condição, no algoritmo do banho térmico a taxa de aceitação é unitária


  <math>A(\mu \rightarrow \nu) = 1 \quad \forall \mu, \nu</math>
  <math>A(\mu \rightarrow \nu) = 1, \quad \forall \mu, \nu</math>


e a taxa de seleção é baseado nos pesos de Boltzmann (peso não nulo inclusive para o estado atual do sistema)
e a taxa de seleção é baseada nos pesos de Boltzmann (peso não nulo inclusive para o estado atual do sistema)


  <math>g(\mu \rightarrow \nu) \propto e^{-\beta E_\nu} \propto p_\nu \quad \forall \mu, \nu</math>
  <math>g(\mu \rightarrow \nu) \propto e^{-\beta E_\nu} \propto p_\nu, \quad \forall \mu, \nu</math>


resultando automaticamente numa probabilidade de transição que respeita o balanço detalhado.
resultando automaticamente numa probabilidade de transição que respeita o balanço detalhado.


Esse algoritmo é muito mais eficiente para sistemas com alto grau de degenerescencia como o modelo de Potts com grau <math>q</math> elevado.
Esse algoritmo é muito mais eficiente para sistemas com alto grau de degenerescência, como o modelo de Potts com grau <math>q</math> elevado.
 
==Testes numéricos==
 
<math>q=2</math>, rede retangular <math>64\times 64</math> com condições de contorno periódicas a uma temperatura <math>T=2.5\text{J}</math> (<math>k_B=1</math>)
 
[[Arquivo:Etime-Q2-T2.5-L64.png|thumb|center|700px|Simulação Monte Carlo com <math>q=2</math> (Ising) e <math>T=2.5\text{J}</math>: Energia em função do tempo]]
[[Arquivo:Mtime-Q2-T2.5-L64.png|thumb|center|700px|Simulação Monte Carlo com <math>q=2</math> (Ising) e <math>T=2.5\text{J}</math>: Magnetização em função do tempo]]
 
Para o modelo de Ising a altas temperaturas, o algoritmo de Metropolis tem uma pequena vantagem, mas para ambos os casos o sistema acaba termalizando em aproximadamente <math>20\text{ MCSweeps}</math> (para uma rede com <math>N</math> spins, <math>1\text{ MCSweep}</math> é equivalente a <math>N</math> passos Monte Carlo, isto é, evolução suficiente para dar a todos os spins uma chance de trocar de estado).
 
<math>q=2</math>, rede retangular <math>64\times 64</math> com condições de contorno periódicas a uma temperatura <math>T=0.8\text{J}</math>
 
[[Arquivo:Etime-Q2-T0.8-L64.png|thumb|center|700px|Simulação Monte Carlo com <math>q=2</math> (Ising) e <math>T=0.8\text{J}</math>: Energia em função do tempo]]
[[Arquivo:Mtime-Q2-T0.8-L64.png|thumb|center|700px|Simulação Monte Carlo com <math>q=2</math> (Ising) e <math>T=0.8\text{J}</math>: Magnetização em função do tempo]]
 
Para o modelo de Ising a baixas temperaturas, encontramos seu comportamento ferromagnético e ambos os algoritmos são quivalentes.
 
<math>q=10</math>, rede retangular <math>64\times 64</math> com condições de contorno periódicas a uma temperatura <math>T=0.8\text{J}</math>
 
[[Arquivo:Etime-Q10-T0.8-L64.png|thumb|center|700px|Simulação Monte Carlo com <math>q=10</math> e <math>T=0.8\text{J}</math>: Energia em função do tempo]]
[[Arquivo:Mtime-Q10-T0.8-L64.png|thumb|center|700px|Simulação Monte Carlo com <math>q=10</math> e <math>T=0.8\text{J}</math>: Magnetização em função do tempo]]
 
Quando <math>q=10 > z</math> podemos notar a diferença entre os algoritmos com banho térmico termalizando em <math>50\text{ MCSweeps}</math> enquanto Metropolis leva pouco menos de <math>200\text{ MCSweeps}</math>.


=Códigos utilizados=
=Códigos utilizados=

Edição atual tal como às 12h33min de 29 de janeiro de 2018

Originalmente descrito por Renfrey Potts em 1951 na sua tese de doutorado, esse modelo é uma generalização do modelo de Ising para a interação entre spins em uma rede cristalina.

Descrição do modelo

No modelo de Potts a estados são considerados spins dispostos em uma rede, geralmente bidimensional retangular, cada spin podendo estar em um dos estados possíveis.

O Hamiltoniano desse sistema é


onde é a constante de acoplamento que determina a intensidade da interação, é a função delta de Kronecker que retorna se e retorna para todos os outros casos, e o somatório considera somente os pares de spins vizinhos.

No caso ferromagnético, , o nível fundamental de energia possui uma degenerescência igual a , correspondendo aos valores possíveis para todos os spins alinhados.

Relação com o modelo de Ising

É importante notar que para o modelo de Potts é equivalente ao modelo de Ising com constante de acoplamento a menos de uma constante aditiva no Hamiltoniano.


nesse caso os spins e têm apenas dois valores possíveis e


logo considerando como valores possíveis para os spins como ou encontramos


Simulação Monte Carlo

Simulação Monte Carlo com algoritmo do banho térmico para uma rede retangular com e utilizando uma temperatura inicial infinita: podemos notar a formação de clusters de spins em baixa temperatura.
Simulação Monte Carlo com algoritmo do banho térmico para uma rede retangular com e : em alta temperatura, a formação de clusters não é observada.

A abordagem utilizada para simular por Monte Carlo um sistema seguindo o modelo de Potts com pequeno é, naturalmente, similar àquela utilizada para o modelo de Ising: seguindo o algoritmo de Metropolis. Entretanto para valores mais elevados de esse algoritmo se torna ineficiente e o sistema demora um tempo muito longo para entrar em equilíbrio térmico.

Eficiência do algoritmo de Metropolis

Para entender porque o algoritmo de Metropolis não é otimo para uma simulação Monte Carlo de um sistema seguindo o modelo de Potts, devemos relembrar como ele resolve o problema de amostragem por importância.

As condições necessárias para a amostragem por importância são:

  • Ergodicidade: a garantia de que qualquer estado do sistema é acessível à partir de qualquer outro estado dado um comprimento suficientemente grande da cadeia de Markov.
  • Balanço detalhado: a garantia de que a cadeia de Markov de matriz estocástica vai convergir, quando o sistema atingir o equilíbrio térmico, para uma dada distribuição .

No caso do ensemble canônico essa distribuição é a distribuição de Boltzmann


onde é a função de partição e é o inverso da temperatura.

Considerando a probabilidade de transição de estado como o produto de uma probabilidade de seleção de um novo estado (a probabilidade de considerar como o próximo estado na cadeia dado o estado atual ) e uma probabilidade de aceitação de transição


o algoritmo de Metropolis atribui um valor fixo e uniforme para a probabilidade de seleção


que claramente garante a ergodicidade, restando apenas uma condição sobre os valores das probabilidades de aceitação:


que é satisfeita com a seguinte lei de seleção:


Exemplo: rede bidimensional retangular com . Um spin cercado por vizinhos de valores diferentes, a probabilidade de o sistema trocar para um estado de menor energia é , logo teremos que esperar em média passos para a simulação avançar.

O problema desse algoritmo para um modelo como o de Potts, que admite um número elevado de estados possíveis para o spin, é evidenciado quando consideramos um sistema a baixas temperaturas. Para altas temperaturas, a probabilidade de aceitação é unitária ou suficientemente alta por conta de um pequeno tornando o algoritmo eficiente. Entretanto a baixas temperaturas, os spins tendem a se alinhar com seus vizinhos constituindo o fenômeno do ferromagnetismo. Se imaginarmos um spin no estado cercado por vizinhos de valores diferentes, seguindo o algoritmo de Metropolis, seja qual for o valor selecionado uniformemente para o novo estado desse spin a probabilidade de aceitação é pois essa troca de spin vai diminuir a energia do sistema (quando for estado de um spin vizinho) ou, no máximo, manter constante a energia do sistema ( continua sendo diferente de todos os spins vizinhos). Com isso, temos uma probabilidade de o sistema trocar para um estado de menor energia, onde é número de coordenação da rede, aumentando muito o tempo necessário para o sistema entrar em equilíbrio.

De maneira similar, se um spin tem o mesmo estado de um de seus vizinhos, teremos novos estados com taxa de aceitação unitária enquanto todos outros estados terão uma taxa de aceitação muito baixa (dependendo da temperatura) resultando em uma probabilidade de transição pouco maior que , novamente atrasando a simulação.

Algoritmo do banho térmico

Uma solução possível para o problema apresentado é utilizar o algoritmo de banho térmico, que também troca o estado de um spin por vez mas utiliza uma técnica diferente para satisfazer a condição do balanço detalhado. Diferentemente do algoritmo de Metropolis, onde a probabilidade de seleção é uniforme e a probabilidade de aceitação obedece uma dada lei resultando em uma probabilidade de transição que respeita a condição, no algoritmo do banho térmico a taxa de aceitação é unitária


e a taxa de seleção é baseada nos pesos de Boltzmann (peso não nulo inclusive para o estado atual do sistema)


resultando automaticamente numa probabilidade de transição que respeita o balanço detalhado.

Esse algoritmo é muito mais eficiente para sistemas com alto grau de degenerescência, como o modelo de Potts com grau elevado.

Testes numéricos

, rede retangular  com condições de contorno periódicas a uma temperatura  ()
Simulação Monte Carlo com (Ising) e : Energia em função do tempo
Simulação Monte Carlo com (Ising) e : Magnetização em função do tempo

Para o modelo de Ising a altas temperaturas, o algoritmo de Metropolis tem uma pequena vantagem, mas para ambos os casos o sistema acaba termalizando em aproximadamente (para uma rede com spins, é equivalente a passos Monte Carlo, isto é, evolução suficiente para dar a todos os spins uma chance de trocar de estado).

, rede retangular  com condições de contorno periódicas a uma temperatura 
Simulação Monte Carlo com (Ising) e : Energia em função do tempo
Simulação Monte Carlo com (Ising) e : Magnetização em função do tempo

Para o modelo de Ising a baixas temperaturas, encontramos seu comportamento ferromagnético e ambos os algoritmos são quivalentes.

, rede retangular  com condições de contorno periódicas a uma temperatura 
Simulação Monte Carlo com e : Energia em função do tempo
Simulação Monte Carlo com e : Magnetização em função do tempo

Quando podemos notar a diferença entre os algoritmos com banho térmico termalizando em enquanto Metropolis leva pouco menos de .

Códigos utilizados

Modelo de Potts

Referências

Potts, Renfrey B. (1952). "Some Generalized Order-Disorder Transformations". Mathematical Proceedings.

M. E. J. Newman, G. T. Barkema, "Monte Carlo Methods in Statistical Physics". Oxford University Press Inc., New York, 1999.