2017-09-20 143 views
-4

我有这段代码,我试图理解发生了什么。这个if语句做了什么?

那么,有谁能告诉我这是数学语句吗?

prob = exp(-dE/kT); 

if dE <= 0 I I rand() <= prob; 

spin(row, col) = - spin(row, col); 
+0

我是酒吧。除此之外应该不错?它不是我的程序,但它运行。当然,结局也是缺失的。 – user469216

回答

3

这是无效的MATLAB语法。所以它会给你一个语法错误。你可能意味着

prob = exp(-dE/kT); 
if dE <= 0 || rand() <= prob 
    spin(row, col) = - spin(row, col); 
end 

,让你基于指数函数(玻尔兹曼分布)的概率,如果你的能量,dE变化,小于或等于零(因此能量损失) ,您的概率高于或等于0和1之间随机生成的数字,矩阵中位置(row,col)的旋转反转,即与-1相乘。

+5

@obchardon编辑某人的回答只是为了删除没有任何作用的东西,这不是非常有礼貌或有用的。我可以编辑Adriaan的代码,并删除所有的空格,因为它们也没用,但没有理由这么做...... OP在其代码中包含了一个分号,所以这个答案只是保留了连续性。 – Wolfie

+1

@Wolfie在我看来,保持代码语法的连续性是很有用的,可以让事情变得清晰。它避免了人们养成坏习惯。这绝不是没有礼貌的。 – obchardon