您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > Ising模型动态模拟(matlab)
Ising模型matlab程序clc;clearall;%H=10,14,20,26,40and80H=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([111;000]);%用于控制曲面图的颜色h1=imagesc(s);%imagesc(A)将矩阵A中的元素数值按大小转化为不同颜色,并在坐标轴对应位置处以这种颜色染色。%imagesc(x,y,A)x,y分别为二维向量,Matlab会在[x1,x2]*[y1,y2]范围内染色。axisequal;axisoff;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;%产生均匀分布的伪随机整数的新函数ifi==1top=up(1,j);%取up中上面的值elsetop=s(i-1,j);%取s中i-1行j列的值endifi==Hbottom=down(1,j);elsebottom=s(i+1,j);endifj==1left=zuo(i,1);elseleft=s(i,j-1);endifj==Lright=you(i,1);elseright=s(i,j+1);enddeltaU=2*s(i,j)*(top+bottom+left+right);%s(i,j)*(top+bottom+left+right)与四周的能量和ifdeltaU=0%以1的概率反转s(i,j)=-s(i,j);elseifrandexp(-deltaU/(k*T))s(i,j)=-s(i,j);endifmod(t,H*L)==0%图像刷新间隔set(h1,'cdata',s);%set语句用于给某对象的属性进行赋值。%具体到set(A,'CData',B):A代表一个对象,'CData'是对象A的其中一个属性,B是准备赋给'CData'的值。GUI对象中%'CData'通常是在控件对象上显示的真彩色图像,使用矩阵表示pause(0.000000000001);endend
本文标题:Ising模型动态模拟(matlab)
链接地址:https://www.777doc.com/doc-2879646 .html