ising模型的matlab模拟,从Mathematica到Matlab的ising模型

icon1.gif 从Mathematica到Matlab的ising模型

我有来自mathematica的问题,它涉及ising模型。这是一段代码:

J1k = Table[2 RandomInteger[] - 1, {L}, {L}]; J2k = Table[2 RandomInteger[] - 1, {L}, {L}]; energy1 := Module[{ii1, ii2, jj1, jj2, kk1, kk2, dG1, ener1, ener2, ener}, ener = 0.; Do[ Do[ jj1 = ii1 + 1; jj2 = ii2 + 1; kk1 = ii1 - 1; kk2 = ii2 - 1; If[jj1 > L, jj1 = 1]; If[jj2 > L, jj2 = 1]; If[kk1 < 1, kk1 = L]; If[kk2 < 1, kk2 = L]; ener1 = -J1k[[ii1, ii2]]*mlat[[ii1, ii2]]*mlat[[jj1, ii2]] - J1k[[kk1, ii2]]*mlat[[ii1, ii2]]*mlat[[kk1, ii2]]; ener2 = -J2k[[ii1, ii2]]*mlat[[ii1, ii2]]*mlat[[ii1, jj2]] - J2k[[ii1, kk2]]*mlat[[ii1, ii2]]*mlat[[ii1, kk2]]; ener = ener1 + ener2 - 2*mlat[[ii1, ii2]] *\[Mu]Bk, {ii1, 1, L}], {ii2, 1, L}]; ener = ener/2.] energy = energy1 这是我所做的:

J1k=2*randint(L,L)-1; J2k=2*randint(L,L)-1; I have created a function: function Energy1 =energy1() %spin interaction with the neighbors ener=0; L=16; J1k=2*randint(L,L)-1; J2k=2*randint(L,L)-1; for ii2=1:L for ii1=1:L jj1=ii1+1;jj2=ii2+1;kk1=ii1-1;kk2=ii2-1; if (jj1>L & jj1==1) end if (jj2>L & jj2==1) end if (kk1 L, j2 = 1]; If[k1 < 1, k1 = L]; If[k2 < 1, k2 = L]; dG1 = -J1k[[i1, i2]]*mlat[[j1, i2]] - J1k[[k1, i2]]*mlat[[k1, i2]]; dG2 = -J2k[[i1, i2]]*mlat[[i1, j2]] - J2k[[i1, k2]]*mlat[[i1, k2]]; dE = 2.*mlat[[i1, i2]] (dG1 + dG2 + \[Mu]Bk); W = N[Exp[-dE/T]]; If[W < 1 && W > Random[] || dE L & j1==1) end if (j2>L & j2==1) end if (k1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值