Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace ConsoleApp3
- {
- class Program
- {
- static void Main(string[] args)
- {
- Random rand = new Random();
- int i, j, Enew = 0, Eold = 0;
- int n = 5;
- int[,] mass = new int[n, n];
- double P, T, M, ET;
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- mass[i, j] = rand.Next(0, 2);
- if (mass[i, j] == 0)
- {
- mass[i, j] = -1;
- }
- //Console.Write("{0}\t", mass[i, j]);
- }
- //Console.WriteLine();
- }
- while(true)
- {
- var start = System.Diagnostics.Stopwatch.StartNew();
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- mass[i, j] = rand.Next(0, 2);
- if (mass[i, j] == 0)
- {
- mass[i, j] = -1;
- }
- //Console.Write("{0}\t", mass[i, j]);
- }
- //Console.WriteLine();
- }
- T = 0.01;
- Console.WriteLine("--------------------------------------");
- Console.WriteLine("--------------------------------------");
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- Console.Write("{0}\t", mass[i, j]);
- }
- Console.WriteLine();
- }
- for (int k = 0; k < 1000000; k++)
- {
- i = rand.Next(0, n);
- j = rand.Next(0, n);
- Eold = Energy(i, j, mass, n);
- mass[i, j] *= -1;
- Enew = Energy(i, j, mass, n);
- if (Eold < Enew)
- {
- P = Math.Pow(2.718, -(Enew - Eold) / T);
- if (P < rand.NextDouble())
- {
- mass[i, j] *= -1;
- }
- }
- }
- Console.WriteLine("--------------------------------------");
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- Console.Write("{0}\t", mass[i, j]);
- }
- Console.WriteLine();
- }
- M = Magnetic(mass, n);
- ET = TotalEnergy(mass, n);
- //save E M
- Console.Write(T);
- Console.Write(" ");
- Console.Write(Eold);
- Console.Write(" ");
- Console.Write(ET);
- Console.Write(" ");
- Console.WriteLine(M);
- start.Stop();
- Console.WriteLine(start.ElapsedMilliseconds);
- //Eold = Energy(1, 1, mass, n);
- //Console.WriteLine(Eold);
- }
- Console.ReadKey();
- }
- static int Energy(int i, int j, int[,] mass, int n)
- {
- int E = 0;
- E += mass[i, j] * mass[(i + 1) % n, j];
- E += mass[i, j] * mass[(n + i - 1) % n, j];
- E += mass[i, j] * mass[i, (j + 1) % n];
- E += mass[i, j] * mass[i, (n + j - 1) % n];
- return -E;
- }
- static double Magnetic(int [,] mass, int n)
- {
- double M = 0;
- for (int i = 0; i < n; i++)
- {
- for(int j = 0; j < n; j++)
- {
- M += mass[i, j];
- }
- }
- M /= (n * n);
- return M;
- }
- static double TotalEnergy(int[,] mass, int n)
- {
- int E = 0;
- double Summ = 0;
- for (int k = 0; k < n; k++)
- {
- for (int t = 0; t < n; t++)
- {
- E = Energy(k, t, mass, n);
- Summ += E;
- }
- }
- Summ /= (n * n);
- Summ /= 2;
- return Summ;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement