model isinga

0

Witam, chcialem zapytac czy ktokolwiek tu zna moze/wie gdzie znalezc kod symulacji modelu isinga z uwzglednieniem entropii i informacji wzajemnych? Szukalem po forach, na stronach uniwerkow, politechnik, itp, bez skutku. Jezyk programowania dowolny.

0

Nie moge jako gosc edytowac, niestety.

Zapomnialem dodac, jesli wie moze jak, krok po kroku policzyc informacje wzajemne i entropie modelu isinga (2d), to moglbym sam to sobie napisac. Napisalem na razie w miare prosty kod do badania zachowania modelu w zaleznosci od temperatury, ale jak sie do tego ma entropia, czy te informacje wzajemne, nie bardzo rozumiem.

0

statystyczna definicja entropii i jedziesz:
S = -k \sum p_i\cdot ln p_i
pi masz tylko dwa, więc licznie entropii jest proste jak konstrukcja cepa.

0
MarekR22 napisał(a):

statystyczna definicja entropii i jedziesz:
S = -k \sum p_i\cdot ln p_i
pi masz tylko dwa, więc licznie entropii jest proste jak konstrukcja cepa.

Ok, to definicja entropii, dzieki. Jednak jak rozumiem to ma byc tylko wykorzystane do obliczenia informacji wzajemnych. Nie bardzo rozumiem jak to sie ma do siebie, moglbym prosic o obszerniejsze tlumaczenie? Jak jedno zalezy od drugiego? Poza tym, definicja entropii - k to stala, a p to "prawdopodobienstwa i-tego stanu" - jak to sie ma do modelu isinga?

0

Rozumiem, że symulujesz to jakimś automatem komórkowym (1D/2D/3D) i metodą Monte Carlo.
Pup = to po prostu stosunek spinów w górę do wszystkich spinów.
Informacji wzajemnych nie kojarzę, ponad 10 od wykładu/egzaminu lat zrobiło swoje, ale najprawdopodobniej masz obliczyć średnią korelacje pomiędzy sąsiednimi spinami lub coś w tym stylu.

0

Uzywam losowo inicjowanej kwadratowej siatki spinow (jesli taki opis ma sens) i tak, metody monte carlo. Rzecz w tym, ze nie licze prawdopodobienstw, tylko zmiane magnetyzacji przy zmianie temperatury, az do przejscia krytycznego, a potem podliczam srednia magnetyzacje.

Teraz chcialbym do tego dodac liczenie tej entropii i informacji wzajemnych:
http://pl.wikipedia.org/wiki/Informacja_wzajemna

Moglbys lopatologicznie wyjasnic (studiuje biologie, jedynie z grubsza rozumiem ten model isinga) jak to zrobic?

0

Czyli jak pisałem masz automat komórkowy dwuwymiarowy.
Pamiętaj, żeby łączyć krawędzie by nie uzyskiwać efektów brzegowych (pewnie to zrobiłeś), wtedy każdy spin jest równoprawny.
Liczenie informacji wzajemnej jest nieco bardziej skomplikowane.
Po pierwsze musisz zrozumieć, że musisz ustalić dla jakich zmiennych losowych chcesz to zrobić! Najprawdopodobniej chodzi o relację dwóch sąsiednich spinów, albo jakiś o określonej odległości od siebie.

double informacjaWzajemna(int dx, int dy) {
      int IleXY[2][2]; // podzielone przez liczbę spinów daje p(x,y) z wiki
      memset(IleXY, 0, sizeof(IleXY));

      // n wymiar tablicy ze spinami
      for (i=0; i<n; ++i)
          for (j=0; j<n; ++j) {
              int i2 = (i+n+dx)%n; // zawijaj krawędzie / łączenie krawędzi
              int j2 = (j+n+dx)%n;
              // tu dla ułatwienia zakładam że spiny mają wartości 0 lub 1, wtedy mogę ich użyć jako indeksów IleXY, 
              // jesli masz inaczej to musisz przerobić linijkę poniżej
              IleXY[spiny[i][j]][spiny[i2][j2]]++;
          }

      double wynik = 0;
      doubel px[2] = { ileWdol()/(double)(n*n), ileWgore()/(double)(n*n) }; // px jest równe py, więc nie definiuje py
      for(i=0; i<2; i++)
          for(j=0; j<2; j++) {
              double pxy = IleXY[i][j]/(double)(n*n);
              wynik += pxy * log(pxy / (px[i]*px[j]) );
          }
      return wynik;
}
0

Laczenie krawedzi - jak rozumiem zwija sie ta siatke w cos w rodzaju cylindra, a to pozwala pominac jakby jej nieskonczona dlugosc?
Wlasciwie to nie mam pojecia dla jakich zmiennych losowych mam to liczyc, polecono mi tylko znalezc albo napisac symulacje modelu isinga 2d i sprawdzic "informacje wzajemna modelu jako funkcje temperatury" - w tak okreslonym zadaniu, dla jakich zmiennych losowych powinienem to liczyc?

Z tego co rozumiem to informacja wzajemna to miara zaleznosci pomiedzy jakimis zmiennymi - jesli cos wiemy o jednej zmiennej, to wiemy to o drugiej i liczy sie to wzorem I(X;Y) = itd~. Model isinga to z kolei uklad spinow ktore oddzialywuja na siebie w malym sasiedztwie. Co to wlasciwie znaczy policzyc hamiltonian takiego ukladu - policzyc poziom energii pomiedzy kazda para wezlow w sieci (spinow)? Czy magnetyzacje czy co, bo im wiecej czytam na ten temat, tym wiecej sprzecznych informacji znajduje :/

0
beyond_zork napisał(a):

Co to wlasciwie znaczy policzyc hamiltonian takiego ukladu - policzyc poziom energii pomiedzy kazda para wezlow w sieci (spinow)?
W tym momencie mnie rozwalasz. Napisałeś, że masz symulacje Monte Carlo, a one opierają się o obliczania hamiltonianu (prawdopodobieństwo zmian spinu podczas symulacji zależy od zmiany wartości hamiltonianu oraz od temperatury).
Chcesz konkretnych odpowiedzi zadawaj konkretne pytania a nie ogólniki.

0

Hm, mozliwe, ze blednie zrozumialem problem. Moze szybciej bedzie tlumaczyc to poza forum? Wyslalem Ci wiadomosc.

0

Ok, chyba mniej wiecej sie polapalem w tym, ale nie jestem np pewien - gdy liczona jest informacja wzajemna to z zamieszczonego kodu wynika (tak przynajmniej rozumiem), ze liczona jest informacja wzajemna dla kazdego spinu, i dla danego spinu i jego dwoch sasiadow. Czemu akurat tych dwoch - czemu wybor padl wlasnie na takich sasiadow? Co dokladnie mowi to w tym wypadku? Napisales, ze najprawdopodobniej chodzi o relacje dwoch sasiednich spinow, dlaczego?

0

W modelu Isinga przy odpowiednich warunkach tworzą się domeny magnetyczne. Informacja wzajemna może służyć do stwierdzenia, w którym momencie pojawiają się domeny.
Poza tym z definicji tej wielkości, potrzebujesz DWIE zmienne losowe, raczej logiczne jest to, że chodzi od dwa bliskie sobie (niekoniecznie sąsiednie) spiny.
Ja robię małe oszustwo i wykorzystuje to, że wszystkie spiny są równoprawne, więc zamiast liczyć średnią dla dwóch konkretnych spinów liczoną po pewnych krokach symulacji (co 10, żeby pomiar był ze zmiennych niezależnych), liczę średnie dla z wszystkich dostępnych par spinów spełniających odpowiednią relacje położenia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1