Mudanças entre as edições de "Algoritmo de Wang-Landau"
Linha 26: | Linha 26: | ||
Se o estado de energia <math> E_2 </math> é aceito, a densidade de estados <math> g(E_2) </math> é multiplicada pelo fator de modificação <math> f > 1 </math> de maneira que <math> g(E_2) \to f \times g(E_2) </math> e a entrada no histograma para <math> H(E_2) </math> é atualizada de forma <math> H(E_2) \to H(E_2) + 1 </math>. Se o estado de energia não é aceito, a densidade de estados <math> g(E_1) </math> é multiplicada pelo fator de modificação, <math> g(E_1) \to f \times g(E_1) </math> e <math> H(E_1) </math> é atualizada de forma <math> H(E_1) \to H(E_1) + 1 </math>. | Se o estado de energia <math> E_2 </math> é aceito, a densidade de estados <math> g(E_2) </math> é multiplicada pelo fator de modificação <math> f > 1 </math> de maneira que <math> g(E_2) \to f \times g(E_2) </math> e a entrada no histograma para <math> H(E_2) </math> é atualizada de forma <math> H(E_2) \to H(E_2) + 1 </math>. Se o estado de energia não é aceito, a densidade de estados <math> g(E_1) </math> é multiplicada pelo fator de modificação, <math> g(E_1) \to f \times g(E_1) </math> e <math> H(E_1) </math> é atualizada de forma <math> H(E_1) \to H(E_1) + 1 </math>. | ||
+ | |||
+ | ====''Flatness''==== | ||
+ | |||
+ | O procedimento de passeio aleatório é seguido até o histograma <math> H(E) </math> estar reto (do inglês, "''flat''"), e para determinar isso, a cada <math> n </math> iterações verificamos se todos valores possíveis de <math> E </math> estão a uma distância, no máximo, <math> x% </math> de <math> \langle H(E) \rangle </math>. A variável <math> x </math> é denominada "''flatness''". Quando o histograma está reto, todos estados de energia foram visitados aproximadamente igualmente. | ||
+ | |||
+ | O número de passos, </math> n </math> que devemos realizar antes de checar deve ser maior que <math> L*L </math> onde <math> L </math> indica o tamanho da rede, para que o algoritmo tenha a oportunidade de visitar cada estado pelo menos uma vez. | ||
+ | |||
+ | Para sistemas simples, podemos utilizar um valor tão alto quanto 95%, entretanto, para este trabalho foi escolhido o valor de 80%. | ||
+ | |||
====Fator de modificação==== | ====Fator de modificação==== | ||
Em geral, como <math> g(E) </math> se torna muito grande, trabalhamos com o logaritmo natural dessas quantidades, <math> \ln g(E) </math>. Portanto, cada atualização da densidade de estados é dada por <math> \ln g(E) \to \ln g(E) + \ln f </math>. O valor comumente utilizado para o fator de modificação é <math> f = f_0 = e </math>. | Em geral, como <math> g(E) </math> se torna muito grande, trabalhamos com o logaritmo natural dessas quantidades, <math> \ln g(E) </math>. Portanto, cada atualização da densidade de estados é dada por <math> \ln g(E) \to \ln g(E) + \ln f </math>. O valor comumente utilizado para o fator de modificação é <math> f = f_0 = e </math>. | ||
− | = | + | Quando o histograma é considerado reto, pelas condições descritas acima, reduzimos o valor de <math> f </math> de forma que o novo valor será <math> f_1 = f_0/2 </math>, resetamos o histograma <math> H(E) </math> e recomeçamos o passeio aleatório. |
− | + | A simulação é parada para um valor de <math> f </math> predeterminado. No caso, usamos <math> f_{final} = \exp (10^{-8} = 1.00000001 </math>. | |
Edição das 20h32min de 28 de novembro de 2021
Nomes: Rafael Abel da Silveira e William Machado Pantaleão
Índice
Introdução
Simulações computacionais, como o método de Monte Carlo, são vastamente utilizadas para estudar transições de fase e fenômenos críticos. O método padrão para simulações de Monte Carlo é o algoritmo de Metropolis, entretanto, algoritmos novos e mais eficientes são usados em simulações modernas, como o algoritmo de Wang-Landau. Ao contrário dos métodos convencionais de Monte Carlo, que geram diretamente uma distribuição canônica a uma dada temperatura
, a abordagem de Wang-Landau estima a densidade de estados
diretamente por meio de um passeio aleatório, que produz um histograma plano no espaço de energia
. [1]
Mesmo para modelos que podem ser resolvidos analiticamente, a densidade de estados não pode ser determinada para sistemas maiores [2]. Com o algoritmo de Wang-Landau, é possível obter a
a partir de um passeio aleatório. A estimativa para
é melhorada a cada etapa do passeio aleatório, usando um fator de modificação
cuidadosamente controlado, para produzir um resultado que converge para o valor real rapidamente.
Amostragem de Wang-Landau
No início da simulação, é desconhecido e fazemos uma estimativa inicial para ele. A abordagem mais simples é definir
para todas as energias possíveis
. A configuração de spin inicial para toda a rede pode ser escolhida arbitrariamente. Então, uma caminhada aleatória no espaço de energia é iniciada pela formação de estados de teste, cada um dos quais é produzido escolhendo aleatoriamente um spin e alterando seu estado.
Cada vez que uma energia é visitada, o histograma
é incrementado em 1. A estimativa de
é então modificada por um fator multiplicativo
, e o valor atualizado realiza um passeio aleatório adicional no espaço de
.
Se e
são as energias antes e depois de um valor de spin ser alterado, a probabilidade de transição da energia
para
é dada por
A razão das probabilidades de transição de para
e de
a
podem ser calculados como
Logo, o algoritmo de passeio aleatório satisfaz o equilíbrio detalhado:
onde é a probabilidade na energia
e
é a probabilidade de transição de
para
.
Se o estado de energia é aceito, a densidade de estados
é multiplicada pelo fator de modificação
de maneira que
e a entrada no histograma para
é atualizada de forma
. Se o estado de energia não é aceito, a densidade de estados
é multiplicada pelo fator de modificação,
e
é atualizada de forma
.
Flatness
O procedimento de passeio aleatório é seguido até o histograma estar reto (do inglês, "flat"), e para determinar isso, a cada
iterações verificamos se todos valores possíveis de
estão a uma distância, no máximo,
de
. A variável
é denominada "flatness". Quando o histograma está reto, todos estados de energia foram visitados aproximadamente igualmente.
O número de passos, </math> n </math> que devemos realizar antes de checar deve ser maior que onde
indica o tamanho da rede, para que o algoritmo tenha a oportunidade de visitar cada estado pelo menos uma vez.
Para sistemas simples, podemos utilizar um valor tão alto quanto 95%, entretanto, para este trabalho foi escolhido o valor de 80%.
Fator de modificação
Em geral, como se torna muito grande, trabalhamos com o logaritmo natural dessas quantidades,
. Portanto, cada atualização da densidade de estados é dada por
. O valor comumente utilizado para o fator de modificação é
.
Quando o histograma é considerado reto, pelas condições descritas acima, reduzimos o valor de de forma que o novo valor será
, resetamos o histograma
e recomeçamos o passeio aleatório.
A simulação é parada para um valor de predeterminado. No caso, usamos
.
Algoritmo
Resumindo, o passo a passo do algoritmo pode ser escrito como:
1. Seto e um fator de modificação
;
2. Aleatoriamente, flipo um spin com probabilidade ;
3. Modifico a densidade de estados e atualizo o histograma
;
4. Continuo até o histograma estar reto, então diminuo o valor de e reseto o valor de
;
5. Repito 2-4 até .
Aplicação ao Modelo de Ising 2D
Modelo de Ising
Uma rede 2D que consiste de uma variável discreta em cada sítio que pode ser usada para representar o momento de dipolo magnético de um átomo.
Cada sítio pode ter o valor de spin ou
.
O hamiltoniano pode ser calculado por
A soma ocorre sobre todos sítios vizinhos e a interação é ferromagnética para e antiferromagnética para
.
Implementação
Resultados
Referências
- ↑ D. P. Landau, Shan-ho Tsai, M. Exler, A new approach to Monte Carlo simulations in statistical physics: Wang-Landau sampling, American Journal of Physics 72, 1294 (2004). https://doi.org/10.1119/1.1707017
- ↑ P. D. Beale, Exact Distribution of Energies in the Two-Dimensional Ising Model, Phys. Rev. Lett. 76,78 (1996). https://doi.org/10.1103/PhysRevLett.76.78