model isinga 2d ab 10 grudnia 2016

Podobne dokumenty
Model Isinga. Katarzyna Sznajd-Weron

Co to jest model Isinga?

Równoległe symulacje Monte Carlo na współdzielonej sieci

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Algorytmy z powrotami. Algorytm minimax

Krytyczność, przejścia fazowe i symulacje Monte Carlo. Katarzyna Sznajd-Weron Physics of Complex System

Metody Metody, parametry, zwracanie wartości

Programowanie obiektowe

Badanie słabych przemian fazowych pierwszego rodzaju w eksperymencie komputerowym dla trójwymiarowego modelu Ashkina-Tellera

Przejścia fazowe w 1D modelu Isinga

Klasy i obiekty cz II

16 Jednowymiarowy model Isinga

Zaawansowane aplikacje WWW - laboratorium

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Obliczenia inspirowane Naturą

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Fizyka statystyczna Teoria Ginzburga-Landaua w średnim polu. P. F. Góra

Modelowanie sieci złożonych

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Programowanie, algorytmy i struktury danych

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Wielki rozkład kanoniczny

Projektowanie algorytmów rekurencyjnych

Java: interfejsy i klasy wewnętrzne

Kurs programowania. Wykład 9. Wojciech Macyna

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Języki i metody programowania Java Lab2 podejście obiektowe

Wykład 4: Klasy i Metody

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Programowanie obiektowe

public enum Environment { Development("Deweloperskie"), Test("Testowe"), Production("Produkcyjne"); private String name;

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Optymalizacja. Symulowane wyżarzanie

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Wykład 7: Pakiety i Interfejsy

Liczby pseudolosowe. Math. Różne sposoby generowania liczb pseudolosowych. Wybrane metody klasy Math

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Programowanie obiektowe

Diagram stanów Laboratorium 9

Programowanie obiektowe i zdarzeniowe

Wariacyjna teoria grupy renormalizacji w opisie uczenia głębokiego czyli Deep

Język JAVA podstawy. Wykład 4, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

3 Metoda NCGF rozwiązywania równania Schrödingera 5

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

Laboratorium Programowania Kart Elektronicznych

Wstęp do sieci neuronowych, wykład 12 Łańcuchy Markowa

W powyższym kodzie utworzono wyliczenie dni tygodnia.

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

11.6 Klasa do obsługi liczb wymiernych

Metody inwersji Bayesowskiej -L7- IGF PAN, 21.IV.2005

Krytyczność i przejścia fazowe. Katarzyna Sznajd-Weron

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

import java.util.*; public class ListExample { public static void main(string args[]) { List<String> lista1= new ArrayList<String> ();

Definiowanie własnych klas

Tablice i łańcuchy znakowe jako obiektowe typy danych. dr Jarosław Skaruz

Android pierwsza aplikacja

Wstęp do ruby dla programistów javy

Podstawy Programowania

Przykład -

Java EE produkcja oprogramowania

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

Języki i metody programowania Java Obsługa zdarzeń - przykłady

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Algorytmy i struktury danych

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

Wstęp do fizyki statystycznej: krytyczność i przejścia fazowe. Katarzyna Sznajd-Weron

Jak ujarzmić hydrę czyli programowanie równoległe w Javie. dr hab. Piotr Bała, prof. UW ICM Uniwersytet Warszawski

Języki i metody programowania Java. Wykład 2 (część 2)

Kilka słów o metodzie Monte Carlo

Wstęp do JUNG. Omówione elementy wykorzystane w Edge Color Project

Systemy Rozproszone - Ćwiczenie 6

Elementy wspo łczesnej teorii inwersji

Platformy Programistyczne Podstawy języka Java

Wprowadzenie do języka Java

Program MC. Obliczyć radialną funkcję korelacji. Zrobić jej wykres. Odczytać z wykresu wartość radialnej funkcji korelacji w punkcie r=

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Wykładnicze grafy przypadkowe: teoria i przykłady zastosowań do analizy rzeczywistych sieci złożonych

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Podstawy programowania obiektowego

Programowanie - instrukcje sterujące

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Podejście obiektowe. Tablice (1) obiektów

Wykład 8: Obsługa Wyjątków

Laboratorium 8 Diagramy aktywności

Język ludzki kod maszynowy

Programowanie w Javie wykład 8 Interfejsy

Diagramy stanów tworzenie modeli analizy i projektowania Na podstawie UML 2.0 Tutorial

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Języki i metody programowania Java Lab4 podejście obiektowe, zastosowanie pojemników

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Transkrypt:

model isinga 2d ab 10 grudnia 2016

tematyka Model spinów Isinga Hamiltonian i suma statystyczna modelu Metoda Monte-Carlo. Algorytm Metropolisa. Obserwable Modelowanie: Model Isinga 1

hamiltonian I Hamiltonian, energia E = J [ij] s i s j H i s i Tutaj +1, spin do góry s i = 1, spin do dołu Pierwszy człon w E jest energią oddziaływania międzyspinowego, drugi opisuje oddziaływanie spinów z polem (magnetycznym) zewnętrznym H. Modelowanie: Model Isinga 2

magnetyzacja Magnetyzacja M = i s i Spiny preferują kierunek pola magnetycznego. W temperaturze niższej niż pewna temperatura kt c, zwana temperaturą Curie, występuje spontaniczne uporządkowanie spinów (przy zerowym polu H) przejście fazowe typu paramagnetyk magnetyk. W temperaturach kt > kt c spiny są ustawione chaotycznie. Pole magnetyczne H modyfikuje zachowanie się układu spinów. Modelowanie: Model Isinga 3

suma statystyczna Suma statystyczna układu Z = exp ( βe) = exp [ β( J {E {E [ij] s i s j H i s i )] β = 1 kt Obliczenia Z dla sieci jedno- i dwuwymiarowych, można otrzymać analitycznie. W przypadku sieci 3-wymiarowych pozostają obliczenia numeryczne oparte na metodzie Monte-Carlo (nawet dla sieci skończonych liczba konfiguracji rośnie bardzo szybko i obliczenia numerycznie dokładne są niemożliwe do wykonania). Numeryczna suma ststystyczna nie jest dobrym punktem wyjścia dla obliczeń termodynamicznych (różniczkowanie jest praktycznie niewykonalne). Modelowanie: Model Isinga 4

metoda monte-carlo (mc) I Metoda polega na generowaniu losowych konfiguracji, gdzie konfiguracja oznacza zbiór spinów przypadkowo skierowanych. Obliczone obserwable uśrednia się po zespole wygenerowanych konfiguracji. Obserwable, np. magnetyzację, oblicza się zgodnie z rozkładem Boltzmanna konfig M = M exp( E/kT ) konfig exp( E/kT ). Czynnik boltzmannowski zmienia się szybko z energią. Można to wykorzystać i generować konfiguracje najważniejsze, zgodne z rozkładem przwdopodobieństwa p(s 1, s 2,... s n) = exp( E/kT ) konfig exp( E/kT ). Nie znamy jednak mianownika tego wyrażenia. Modelowanie: Model Isinga 5

algorytm metropolisa W tym wypadku średnie wartości energii i magnetyzacji układu spinów obliczamy wg. wzorów E = 1 M M E(k-ta konfiguracja) k=1 M = 1 M M(k-ta konfiguracja) M k=1 gdzie k-ta konfiguracja = {s (k) 1,..., s(k) n, a M oznacza liczbę wygenerowanych konfiguracji. Modelowanie: Model Isinga 6

algorytm metropolisa Pierwszy algorytm wyboru konfiguracji w tego rodzaju problemach podali Metropolis i inni [2]. Jego realizacja jest następująca: Dla bieżącej konfiguracji wybierz spin s i i przyjmij s i, prba = s i oblicz zmianę energii układu jeżeli δe = E(s 1,..., s i, prba,..., s n) E(s 1,..., s i,..., s n) p = e δe/kt > γ gdzie γ jest liczbą losową z rozkładu jednorodnego (0, 1), wówczas s i s i, prba (zamień spin na przeciwny). powtórz wszystko dla każdego spinu sieci Zaczynając od konfiguracji początkowej, wykonujemy wstępną serię kroków MC termalizacja, a następnie serię kroków gdzie obliczamy obserwable układu. Po tym obliczamy średnie ich wartości. Modelowanie: Model Isinga 7

przykład I Kramers i Wannier [3] pokazali, że temperatura krytyczna dla kwadratowej sieci 2-wymiarowej wynosi kt = 2.269. Onsager [4] rozwiązał model 2-wymiarowy dokładnie, w granicy termodynamicznej n dla H = 0. Modelowanie: Model Isinga 8

przykład programu I /****************************************************************************** * Compilation: javac Ising.java * Execution: java Ising N kt * * Create an N-by-N grid of sites. Each site has spin "up" (+1) * or "down" (-1). * * % java Ising N 2.26918 // critical temperature * ******************************************************************************/ import java.awt.color; public class Ising { private int N; // N-by-N grid of sites private double J = 1.0; // strength of spin-spin interaction // (ferromagnetic when J is positive) private double kt; // temperature (say between 1 and 4) private boolean[][] spin; // up (true) or down (false) private double p=.5; // occupation probability // N-by-N grid, kt = temperature, p = probability of up spin Modelowanie: Model Isinga 9

przykład programu II public Ising(int N, double kt, double p) { this.n = N; this.kt = kt; this.spin = new boolean[n][n]; this.p = p; void start() { // initialize random matrix of boolean values for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) spin[i][j] = (Math.random() < p); // set scale and turn on animation mode StdDraw.setXscale(0, N); StdDraw.setYscale(0, N); StdDraw.enableDoubleBuffering(); // loop over configurations for (int t = 0; true; t++) { phase(); draw(); StdDraw.show(); Modelowanie: Model Isinga 10

przykład programu III StdDraw.pause(50); // total average magnetization (between -1 and 1) public double magnetization() { int M = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (spin[i][j]) M++; else M--; return 1.0 * M / (N * N); // total energy of site (i, j), using periodic boundary conditions // assumes 0 <= i, j < N private double energy(int i, int j) { double E = 0.0; if (spin[i][j] == spin[(i+1)%n][j]) E++; else E--; if (spin[i][j] == spin[i][(j+1)%n]) E++; Modelowanie: Model Isinga 11

przykład programu IV else E--; if (spin[i][j] == spin[(i-1+n)%n][j]) E++; else E--; if (spin[i][j] == spin[i][(j-1+n)%n]) E++; else E--; return -J * E; // total energy, using periodic boundary conditions public double energy() { double E = 0.0; for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) // divide by two to mitigate double-counting E += 0.5 * energy(i, j); return E; // one Monte Carlo step public void step(int i, int j) { double deltae = -2 * energy(i, j); // flip if energy decreases or get lucky if ((deltae <= 0) (Math.random() <= Math.exp(-deltaE / kt))) Modelowanie: Model Isinga 12

przykład programu V spin[i][j] =!spin[i][j]; // one Monte Carlo phase - N^2 steps public void phase() { for (int steps = 0; steps < N*N; steps++) { int i = (int) (Math.random() * N); int j = (int) (Math.random() * N); step(i, j); // plot it public void draw() { for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (spin[i][j]) StdDraw.setPenColor(StdDraw.WHITE); else StdDraw.setPenColor(StdDraw.BLUE); StdDraw.filledSquare(i + 0.5, j + 0.5,.5); // draw lines Modelowanie: Model Isinga 13

przykład programu VI StdDraw.setPenColor(StdDraw.BLACK); for (int i = 0; i < N; i++) { StdDraw.line(i, 0, i, N); StdDraw.line(0, i, N, i); // string representation public String tostring() { String NEWLINE = System.getProperty("line.separator"); String s = ""; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (spin[i][j]) s += "< "; else s += "> "; s += NEWLINE; return s; public static void main(string[] args) { if (args.length < 2) { Modelowanie: Model Isinga 14

przykład programu VII System.out.println("use: java Ising L kt"); System.exit(1); int N = Integer.parseInt(args[0]); // N-by-N lattice double kt = Double.parseDouble(args[1]); // temperature Ising ising = new Ising(N, kt, 0.5); ising.start(); Modelowanie: Model Isinga 15

literatura R. Feynman. Mechanika statystyczna. PWN. Warszawa. N. Metropolis, A. Rosenbluth, M. Rosenbluth, A. Teller, and E. Teller. J. Chem. Phys. 21, 1087 (1953). H.A. Kramers and G.H. Wannier. Phys. Rev. 60, 252 (1941). Lars Onsager. Phys. Rev. 65, 117 (1944). Modelowanie: Model Isinga 16

Thank you! Modelowanie: Model Isinga 16

przykład Modelowanie: Model Isinga

przykład Modelowanie: Model Isinga