求蒙特卡罗方法解一维ising模型的模拟程序,c或c++的,外场为零

如题所述

第1个回答  2013-10-07
我写过一个用mathematica的程序,比较简单。要的话可以给你。追问

好的,麻烦上传一下

追答

Clear[n, JT, s, M, Z, A, de];
n = 6; JT = .5;
s = Table[1, {n}, {n}];(*选取初始configuration为6*6的自旋全部向上*)
M = n^2.;(*M标记update过程中的总的磁化强度的绝对值,初始为36*)
Z = 0;(*标记随机求和所进行的次数,初始为0*)
data = Table[(A = 0;
k = 10000;
Do[
Module[{k1, k2, \[Xi]},
k1 = RandomInteger[{1, 6}];
k2 = RandomInteger[{1, 6}];
\[Xi] = .1 Random[];

de = 0;
If[k1 > 1, de = de + s[[k1 - 1, k2]], de];
If[k1 1, de = de + s[[k1, k2 - 1]], de];
If[k2 \[Xi], s[[k1, k2]] = -s[[k1, k2]], s[[k1, k2]]];
If[R > \[Xi], M = M + 2 s[[k1, k2]], M];
A = A + Abs[M];
], {k}]; N[A/k]), {30}]
做图:
Show[{Plot[Mean[data], {x, 0, 30}, PlotStyle -> Red],
ListLinePlot[data]}, PlotRange -> {4, 7}, Frame -> True]

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网