Das ist keine gültige MATLAB-Syntax. Also, was es tut, gibt Ihnen einen Syntaxfehler. Sie meinten wahrscheinlich
prob = exp(-dE/kT);
if dE <= 0 || rand() <= prob
spin(row, col) = - spin(row, col);
end
, die Ihnen eine Wahrscheinlichkeit auf einer Exponentialfunktion (die Boltzmann-Verteilung) und wenn Ihre Energieänderung basiert gibt, dE
, kleiner als oder gleich Null ist (also Energie verloren) , oder ist Ihre Wahrscheinlichkeit höher oder gleich einer zufällig generierten Zahl zwischen 0 und 1, wird der Spin an der Stelle (row,col)
in Ihrer Matrix invertiert, dh mit -1
multipliziert.
die I's sind Bars. Anders als das sollte gut sein nein? Es ist nicht mein Programm, aber es läuft. Natürlich fehlt auch ein Ende. – user469216