ising.m

来自「用Monte-Carlo方法解决二维Ising模型」· M 代码 · 共 45 行

M
45
字号
% Ising模型估计U和C
function [U,C]=Ising(M,p,N,N1,N2,number,preselect,image)
%函数格式:[U,C] =  Ising(n,p,N,N1,N2,times,preselect,image)
%输入:    n - 二维Ising模型的边长,满足周期边界条件
%        p - beta的取值个数
%        N,N1,N2,times - 组策略,具体地,N为马氏链长度,N1为求beta中舍去的开头的
%        状态数,N2为取样本(状态)的间隔,times为计算次数
%        preselect - 预选方式,1=等可能预选,2=单点变化预选
%        image - 选择输出输出的图像,1=输出图像,其它,不输出
%输出:   U - 内能U的结果序列
%        C - 比热容C的结果序列

n=M-1;
U([1:p+1])=0;
C([1:p+1])=0;

for k=1:number
    for i=0:p
        beta=i/p;
        sigma=initiate(n);
        [H,H2]=FuncHSpace(sigma,N,N1,N2,beta,preselect);
        U(i+1)=U(i+1)+H/(n+1)/(n+1);
        C(i+1)=C(i+1)+beta^2/(n+1)^2*(H2-H*H);
    end
end

U=U/number;
C=C/number;

if image==1
    figure;
    subplot(1,2,1);
    plot([0:1/p:1],U,'r','linewidth',2);
    xlabel('\beta');
    ylabel('U');
    %figure;
    subplot(1,2,2);
    plot([0:1/p:1],C,'b','linewidth',2);
    xlabel('\beta');
    
    ylabel('C');
end

end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?