function nc = spin2d(config,taux,n) // Simule un systeme de spin dont les taux sont // donnes dans une matrice a 2 lignes et 5 colonnes. // La configuration est une matrice de booleens, // les conditions de bord sont periodiques. // Retourne et represente graphiquement la configuration apres // n iterations. // initialisations probas = taux/max(taux); // probabilites de changement nc = config; // configuration de depart [l,c] = size(config); // dimensions // fonctions auxiliaires deff("y=modx(x)",.. // conditions de bord en abscisse "if x==0 then, y=l; elseif x==l+1 then, y=1; else y=x; end"); deff("y=mody(x)",.. // conditions de bord en ordonnee "if x==0 then, y=c; elseif x==c+1 then, y=1; else y=x; end"); deff("n=voisins(x,y)",.. // nombre de voisins occupes "n=sum(bool2s([nc(modx(x-1),y),nc(modx(x+1),y),.. nc(x,mody(y-1)),nc(x,mody(y+1))]))"); // boucle principale for i=1:n, // debut des iterations x=grand(1,1,"uin",1,l); // abscisse au hasard y=grand(1,1,"uin",1,c); // ordonnee au hasard p=probas(1+bool2s(nc(x,y)),.. // etat du site 1+voisins(x,y)); // voisins occupes if rand(1,1)