Advertisement
VictoriaLodochkina

zei

Nov 15th, 2021
1,059
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.58 KB | None | 0 0
  1. using System;
  2.  
  3. using System.Collections.Generic;
  4.  
  5. using System.Linq;
  6.  
  7. using System.Text;
  8.  
  9. using System.Threading.Tasks;
  10.  
  11. namespace Zeydel
  12.  
  13. {
  14.  
  15.     class Program
  16.  
  17.     {
  18.         static void Main(string[] args)
  19.         {
  20.             double maxd, maxdp = 0, eps, k, sum_kv = 0;
  21.             int i, j;
  22.             double[] B, X, d;
  23.             double[,] A;
  24.             Console.Write("Задайте количество строк: ");
  25.             int n = Convert.ToInt32(Console.ReadLine());
  26.             B = new double[n];
  27.             X = new double[n];
  28.             d = new double[n];
  29.             A = new double[n, n];
  30.             for (i = 0; i < n; i++)
  31.             {
  32.                 B[i] = 0;
  33.                 X[i] = 0;
  34.                 d[i] = 0;
  35.                 for (j = 0; j < n; j++)
  36.                 {
  37.                     A[i, j] = 0;
  38.                 }
  39.             }
  40.             Console.WriteLine("Построчно введите значения матрицы коэффициентов перед x\n(при i=j A[i][j] не равно 0)");
  41.             for (i = 0; i < n; i++)
  42.             {
  43.                 for (j = 0; j < n; j++)
  44.                 {
  45.                     Console.Write("A[" + i + "][" + j + "] = ");
  46.                     A[i, j] = Convert.ToDouble(Console.ReadLine());
  47.                     if ((i == j) && (A[i, j] == 0))
  48.                     {
  49.                         Console.WriteLine("Ошибка ввода");
  50.                         Console.ReadKey();
  51.                         return;
  52.                     }
  53.                 }
  54.             }
  55.             Console.WriteLine("Введите значения результирующей матрицы");
  56.             for (i = 0; i < n; i++)
  57.             {
  58.                 Console.Write("B[" + i + "] = ");
  59.                 B[i] = Convert.ToDouble(Console.ReadLine());
  60.             }
  61.             Console.WriteLine("Матрица коэффициентов перед х имеет вид:");
  62.             for (i = 0; i < n; ++i)
  63.             {
  64.                 for (j = 0; j < n; ++j)
  65.                 {
  66.                     Console.Write(A[i, j] + " ");
  67.                 }
  68.                 Console.WriteLine();
  69.             }
  70.             Console.WriteLine("Результирующая матрица имеет вид:");
  71.             for (i = 0; i < n; ++i)
  72.             {
  73.                 Console.WriteLine(B[i]);
  74.             }
  75.             //Выполняем проверку
  76.             for (i = 0; i < n; ++i)
  77.             {
  78.                 for (j = 0; j < n; ++j)
  79.                 {
  80.                     if (i != j)
  81.                     {
  82.                         k = -A[i, j] / A[i, i];
  83.                         sum_kv += k * k;
  84.                     }
  85.                     else
  86.                     {
  87.                         sum_kv += 0;
  88.                     }
  89.                 }
  90.             }
  91.             sum_kv = Math.Sqrt(sum_kv);
  92.             if (sum_kv >= 1)
  93.             {
  94.                 Console.WriteLine("Последовательность не является сходящейся!");
  95.                 Console.ReadKey();
  96.                 return;
  97.             }
  98.             //Водим значение погрешности
  99.             Console.WriteLine("Введите значение погрешности:");
  100.             eps = Convert.ToDouble(Console.ReadLine());
  101.  
  102.             //Производится решение методом Зейделя
  103.             do
  104.             {
  105.                 for (i = 0; i < n; ++i)
  106.                 {
  107.                     d[i] = X[i];
  108.                     X[i] = B[i];
  109.                     for (j = 0; j < n; ++j)
  110.                     {
  111.                         if (i != j)
  112.                         {
  113.                             X[i] -= A[i, j] * X[j];
  114.                         }
  115.                     }
  116.                     X[i] = X[i] / A[i, i];
  117.                     d[i] = Math.Abs(d[i] - X[i]);
  118.                 }
  119.                 maxd = d[0];
  120.                 for (i = 1; i < n; ++i)
  121.                 {
  122.                     if (d[i] > maxd)
  123.                     {
  124.                         maxd = d[i];
  125.                     }
  126.                 }
  127.             } while (maxd > eps);
  128.             //Вывод ответа
  129.             Console.WriteLine("Корнями данной системы линейных алгебраических уравнений являются:");
  130.             for (i = 0; i < n; ++i)
  131.             {
  132.                 Console.WriteLine("X[" + i + "] = " + X[i]);
  133.             }
  134.             Console.ReadKey();
  135.             return;
  136.         }
  137.     }
  138. }
  139.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement