Advertisement
Guest User

Program

a guest
Apr 19th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.48 KB | None | 0 0
  1. using System;
  2.  
  3. namespace ConsoleApp3
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             Random rand = new Random();
  10.             int i, j, Enew = 0, Eold = 0;
  11.             int n = 5;
  12.             int[,] mass = new int[n, n];
  13.             double P, T, M, ET;
  14.  
  15.  
  16.             for (i = 0; i < n; i++)
  17.             {
  18.                 for (j = 0; j < n; j++)
  19.                 {
  20.                     mass[i, j] = rand.Next(0, 2);
  21.                     if (mass[i, j] == 0)
  22.                     {
  23.                         mass[i, j] = -1;
  24.                     }
  25.                     //Console.Write("{0}\t", mass[i, j]);
  26.                 }
  27.                 //Console.WriteLine();
  28.             }
  29.  
  30.             while(true)
  31.             {
  32.                 var start = System.Diagnostics.Stopwatch.StartNew();
  33.                
  34.                 for (i = 0; i < n; i++)
  35.                 {
  36.                     for (j = 0; j < n; j++)
  37.                     {
  38.                         mass[i, j] = rand.Next(0, 2);
  39.                         if (mass[i, j] == 0)
  40.                         {
  41.                             mass[i, j] = -1;
  42.                         }
  43.                         //Console.Write("{0}\t", mass[i, j]);
  44.                     }
  45.                     //Console.WriteLine();
  46.                 }
  47.                 T = 0.01;
  48.                 Console.WriteLine("--------------------------------------");
  49.                 Console.WriteLine("--------------------------------------");
  50.                 for (i = 0; i < n; i++)
  51.                 {
  52.                     for (j = 0; j < n; j++)
  53.                     {
  54.                         Console.Write("{0}\t", mass[i, j]);
  55.                     }
  56.                     Console.WriteLine();
  57.                 }
  58.                
  59.                 for (int k = 0; k < 1000000; k++)
  60.                 {
  61.                     i = rand.Next(0, n);
  62.                     j = rand.Next(0, n);
  63.                     Eold = Energy(i, j, mass, n);
  64.                     mass[i, j] *= -1;
  65.                     Enew = Energy(i, j, mass, n);
  66.                     if (Eold < Enew)
  67.                     {
  68.                         P = Math.Pow(2.718, -(Enew - Eold) / T);
  69.                         if (P < rand.NextDouble())
  70.                         {
  71.                             mass[i, j] *= -1;
  72.                         }
  73.                     }
  74.                 }
  75.  
  76.  
  77.                 Console.WriteLine("--------------------------------------");
  78.                 for (i = 0; i < n; i++)
  79.                 {
  80.                     for (j = 0; j < n; j++)
  81.                     {
  82.                         Console.Write("{0}\t", mass[i, j]);
  83.                     }
  84.                     Console.WriteLine();
  85.                 }
  86.  
  87.  
  88.                 M = Magnetic(mass, n);
  89.                 ET = TotalEnergy(mass, n);
  90.                 //save E M
  91.                 Console.Write(T);
  92.                 Console.Write(" ");
  93.                 Console.Write(Eold);
  94.                 Console.Write(" ");
  95.                 Console.Write(ET);
  96.                 Console.Write(" ");
  97.                 Console.WriteLine(M);
  98.  
  99.                 start.Stop();
  100.                 Console.WriteLine(start.ElapsedMilliseconds);
  101.  
  102.                 //Eold = Energy(1, 1, mass, n);
  103.                 //Console.WriteLine(Eold);
  104.  
  105.             }
  106.             Console.ReadKey();
  107.  
  108.  
  109.  
  110.  
  111.         }
  112.  
  113.         static int Energy(int i, int j, int[,] mass, int n)
  114.         {
  115.             int E = 0;
  116.             E += mass[i, j] * mass[(i + 1) % n, j];
  117.             E += mass[i, j] * mass[(n + i - 1) % n, j];
  118.             E += mass[i, j] * mass[i, (j + 1) % n];
  119.             E += mass[i, j] * mass[i, (n + j - 1) % n];
  120.             return -E;
  121.         }
  122.  
  123.         static double Magnetic(int [,] mass, int n)
  124.         {
  125.             double M = 0;
  126.             for (int i = 0; i < n; i++)
  127.             {
  128.                 for(int j = 0; j < n; j++)
  129.                 {
  130.                     M += mass[i, j];
  131.                 }
  132.             }
  133.             M /= (n * n);
  134.             return M;
  135.         }
  136.  
  137.         static double TotalEnergy(int[,] mass, int n)
  138.         {
  139.             int E = 0;
  140.             double Summ = 0;
  141.             for (int k = 0; k < n; k++)
  142.             {
  143.                 for (int t = 0; t < n; t++)
  144.                 {
  145.                     E = Energy(k, t, mass, n);
  146.                     Summ += E;
  147.                 }
  148.             }
  149.            
  150.             Summ /= (n * n);
  151.             Summ /= 2;
  152.             return Summ;
  153.         }
  154.     }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement