2017-09-20 138 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