Ising模型动态模拟(matlab)
Ising 模型matlab程序clc;clear all;%H=10, 14, 20, 26, 40 and 80H=100;L=300;%T=2/(log(1+sqrt(2))); %温度k=1.3806488*10^(-23);%k=1;T=2/(log(1+sqrt(2))); %温度s=round(rand(H,L))*2-1;%-1和1矩阵t=1;%模拟次数320000colormap([1 1 1;0 0 0]);%用于控制曲面图的颜色h1=imagesc(s);%imagesc(A)将矩阵A中的元素数值按大小转化为不同颜色,并在坐标轴对应位置处以这种颜色染色。%imagesc(x,y,A) x, y分别为二维向量,Matlab会在[x1,x2]*[y1,y2]范围内染色。axis equal;axis off;set(gcf,'color',[.5 .5 .5]);%gcf为当前Figure 对象的句柄,设置颜色为灰色,即背景的颜色% up=round(rand(1,L))*2-1;% down=[ones(1,floor(L/2)).*(-1),ones(1,L-floor(L/2))];% zuo=ones(H,1)*(-1);% you=ones(H,1);up=ones(1,L)*(-1);down=ones(1,L)*(-1);zuo=ones(H,1)*(-1);you=ones(H,1)*(-1);%while(t<=1000/3*H*L) %总模拟次数while(t<=3200000) %总模拟次数 t=t+1; i=floor(rand*H)+1;%产生均匀分布的伪随机整数的新函数 j=floor(rand*L)+1;%产生均匀分布的伪随机整数的新函数 if i==1 top=up(1,j);%取up中上面的值 else top=s(i-1,j);%取s中i-1行j列的值 end if i==H bottom=down(1,j); else bottom=s(i+1,j); end if j==1 left=zuo(i,1); else left=s(i,j-1); end if j==L right=you(i,1); else right=s(i,j+1); end deltaU=2*s(i,j)*(top+bottom+left+right);%s(i,j)*(top+bottom+left+right)与四周的能量和 if deltaU<=0 %以1的概率反转 s(i,j)=-s(i,j); elseif rand