Advertisement
TTLC198

CM2

Nov 16th, 2021
855
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.45 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace CM2
  5. {
  6.     class Program
  7.     {
  8.         private static double[] unkn = new double[3];
  9.         private static double[] unknNull = new double[3];
  10.         private static double[] coef =
  11.         {
  12.             1.667, 0.33, 0.5,
  13.             - 0.6, 2.4, 0.3,
  14.             - 0.33, 0.5, 2.5
  15.         };
  16.  
  17.         static void Main(string[] args)
  18.         {
  19.             double eps = 0.001, eps1 = 0.00001;
  20.  
  21.             Console.WriteLine("Введите начальные приближения: ");
  22.             for (int i = 0; i < 3; i++)
  23.             {
  24.                 Console.WriteLine("x{0} = ", i);
  25.                 unknNull[i] = 0;
  26.             }
  27.  
  28.             Console.WriteLine("Кол-во итераций: {0}", MZ(eps));
  29.            
  30.             for (int i = 0; i < unkn.Length; i++)
  31.             {
  32.                 Console.WriteLine("x{0} = {1}", i, unkn[i]);
  33.             }
  34.         }
  35.  
  36.         static int RL(double eps)
  37.         {
  38.             int k = 0;
  39.  
  40.             for(k = 1;; k++)
  41.             {
  42.                 for (int i = 0; i < unkn.Length; i++)
  43.                 {
  44.                     for (int j = i * 3; j < (i + 1) * 3; j++)
  45.                     {
  46.                         unkn[i] += coef[j] * (j % 3 != i ? unknNull[j % 3] : 1);
  47.                         //Console.WriteLine("unkn[{2}]={0}, unkn={6}, j = {1}, i ={2}, coef[{1}]={3}, unknNull[{4}]={5}", unkn[i], j, i, coef[j], j % 3, (j % 3 != i ? unknNull[j % 3] : 1), coef[j] * (j % 3 != i  ? unknNull[j % 3] : 1));
  48.                     }
  49.                 }
  50.                 Console.WriteLine("x = {0}\ny = {1}\nz = {2}", unkn[0], unkn[1], unkn[2]);
  51.                 Console.WriteLine("x0 = {0}\ny0 = {1}\nz0 = {2}\nk = {3}", unknNull[0], unknNull[1], unknNull[2], k);
  52.  
  53.                 if (Math.Abs(unkn[0] - unknNull[0]) + Math.Abs(unkn[1] - unknNull[1]) +
  54.                     Math.Abs(unkn[2] - unknNull[2]) <= eps) break;
  55.                
  56.                 unknNull = unkn;
  57.                 unkn = new double[unknNull.Length];
  58.             }
  59.  
  60.             return k;
  61.         }
  62.  
  63.         static int MZ(double eps)
  64.         {
  65.             int k = 0;
  66.  
  67.             for(k = 1;; k++)
  68.             {
  69.                 for (int i = 0; i < unkn.Length; i++)
  70.                 {
  71.                     for (int j = i * 3; j < (i + 1) * 3; j++)
  72.                     {
  73.                         unkn[i] += coef[j] * (j % 3 != i ? (i == 0 ? unknNull[j % 3] : i == 1 ? j % 3 == 0 ? unkn[i-1] : unknNull[j % 3] : i == 2 ? unkn[j % 3] : 1) : 1);
  74.                         //Console.WriteLine("unkn[{2}]={0}, unkn={6}, j = {1}, i ={2}, coef[{1}]={3}, unknNull[{4}]={5}", unkn[i], j, i, coef[j], j % 3, (j % 3 != i ? unknNull[j % 3] : 1), coef[j] * (j % 3 != i  ? unknNull[j % 3] : 1));
  75.                     }
  76.                 }
  77.                 Console.WriteLine("x = {0}\ny = {1}\nz = {2}", unkn[0], unkn[1], unkn[2]);
  78.                 Console.WriteLine("x0 = {0}\ny0 = {1}\nz0 = {2}\nk = {3}", unknNull[0], unknNull[1], unknNull[2], k);
  79.  
  80.                 if (Math.Abs(unkn[0] - unknNull[0]) + Math.Abs(unkn[1] - unknNull[1]) +
  81.                     Math.Abs(unkn[2] - unknNull[2]) <= eps) break;
  82.                
  83.                 unknNull = unkn;
  84.                 unkn = new double[unknNull.Length];
  85.             }
  86.  
  87.             return k;
  88.         }
  89.        
  90.         static int MPI(double eps)
  91.         {
  92.             int k = 0;
  93.  
  94.             for(k = 1;; k++)
  95.             {
  96.                 for (int i = 0; i < unkn.Length; i++)
  97.                 {
  98.                     for (int j = i * 3; j < (i + 1) * 3; j++)
  99.                     {
  100.                         unkn[i] += coef[j] * (j % 3 != i ? unknNull[j % 3] : 1);
  101.                         //Console.WriteLine("unkn[{2}]={0}, unkn={6}, j = {1}, i ={2}, coef[{1}]={3}, unknNull[{4}]={5}", unkn[i], j, i, coef[j], j % 3, (j % 3 != i ? unknNull[j % 3] : 1), coef[j] * (j % 3 != i  ? unknNull[j % 3] : 1));
  102.                     }
  103.                 }
  104.                 Console.WriteLine("x = {0}\ny = {1}\nz = {2}", unkn[0], unkn[1], unkn[2]);
  105.                 Console.WriteLine("x0 = {0}\ny0 = {1}\nz0 = {2}\nk = {3}", unknNull[0], unknNull[1], unknNull[2], k);
  106.  
  107.                 if (Math.Abs(unkn[0] - unknNull[0]) + Math.Abs(unkn[1] - unknNull[1]) +
  108.                     Math.Abs(unkn[2] - unknNull[2]) <= eps) break;
  109.  
  110.                 unknNull = unkn;
  111.                 unkn = new double[unknNull.Length];
  112.             }
  113.  
  114.             return k;
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement