Ising

Z Skrypty dla studentów Ekonofizyki UPGOW

(Różnice między wersjami)
m (Fast Ising (matlab))
m (Fast Ising (matlab))
Linia 13: Linia 13:
[http://ocho.uwaterloo.ca/~pfieguth/Software/Ising/ising.html Paul Fieguth]
[http://ocho.uwaterloo.ca/~pfieguth/Software/Ising/ising.html Paul Fieguth]
 +
 +
Opis działania:
Opis działania:
-
* załóżmy, że przeprowadzamy symulacje dla n=6
+
Program implementuje metodę symulacji modelu Isinga stosując tzw. checkerboard decomposition polegającą na podziale sieci na dwie niezależne i aktualizacji wszystkich węzłów każdej podsieci w jednocześnie.
 +
* załóżmy, że przeprowadzamy symulacje dla n=6
* definiowane są dwie tablice 8x8:
* definiowane są dwie tablice 8x8:
Linia 48: Linia 51:
dla których miejsca (indeksy) niezerowych elementów sa zapamiętanie w wektorach e i o.
dla których miejsca (indeksy) niezerowych elementów sa zapamiętanie w wektorach e i o.
 +
Proszę zauważyć, że e i o są jednowymiarowymi tablicami wskaźników. W Octave/Matlab macierz można indeksować zarówno jednym jak i dwoma wskaźnikami np.
 +
 +
 +
<source lang="matlab">
 +
octave:28> M=[1,2;3,4]
 +
M =
 +
  1  2
 +
  3  4
 +
octave:29> M(1)
 +
ans =  1
 +
octave:30> M(1,2)
 +
ans =  2
 +
octave:31> M(3)
 +
ans =  2
 +
octave:32> M(1:4)
 +
ans =
 +
  1  3  2  4
 +
</source>
===Problem czasu? ===
===Problem czasu? ===

Wersja z 09:45, 14 gru 2010

Model Isinga w ekonofizyce

Mamy Hamiltonian: \(H = -\sum_{i,j} J_{ij} s_i s_j - \mu B \sum_i s_i \, \)


Model Isinga dany jest przez ogólną

  • ferromagnetic coupling
  • anti-ferromagnetic coupling

Fast Ising (matlab)

Paul Fieguth


Opis działania:

Program implementuje metodę symulacji modelu Isinga stosując tzw. checkerboard decomposition polegającą na podziale sieci na dwie niezależne i aktualizacji wszystkich węzłów każdej podsieci w jednocześnie.

  • załóżmy, że przeprowadzamy symulacje dla n=6
  • definiowane są dwie tablice 8x8:
t =
 
   0   0   0   0   0   0   0   0
   0   1   0   1   0   1   0   0
   0   0   1   0   1   0   1   0
   0   1   0   1   0   1   0   0
   0   0   1   0   1   0   1   0
   0   1   0   1   0   1   0   0
   0   0   1   0   1   0   1   0
   0   0   0   0   0   0   0   0
e = find(t);
t =
 
   0   0   0   0   0   0   0   0
   0   0   1   0   1   0   1   0
   0   1   0   1   0   1   0   0
   0   0   1   0   1   0   1   0
   0   1   0   1   0   1   0   0
   0   0   1   0   1   0   1   0
   0   1   0   1   0   1   0   0
   0   0   0   0   0   0   0   0
o = find(t);

dla których miejsca (indeksy) niezerowych elementów sa zapamiętanie w wektorach e i o. Proszę zauważyć, że e i o są jednowymiarowymi tablicami wskaźników. W Octave/Matlab macierz można indeksować zarówno jednym jak i dwoma wskaźnikami np.


octave:28> M=[1,2;3,4]
M =
   1   2
   3   4
octave:29> M(1)
ans =  1
octave:30> M(1,2)
ans =  2
octave:31> M(3)
ans =  2
octave:32> M(1:4)
ans =
  1   3   2   4

Problem czasu?