Загрузка данных


using System;

namespace SimpleIterationMethodApp
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = 3;

            // ИСХОДНАЯ матрица A (до ручных преобразований, из 1-го фото)
            double[,] A = {
                {  4.0, -1.0, -0.2 },
                { -0.4,  2.0, -0.3 },
                {  0.3,  0.6, -5.0 }
            };

            // ИСХОДНЫЙ вектор B (правая часть уравнений, из 1-го фото)
            double[] B = { 1.0, 0.8, 2.0 };

            double e = 0.01;

            // Нулевое приближение из таблицы (x1, x2, x3 из нулевой строки)
            double[] X0 = { 0.25, 0.4, -0.4 };
            double[] X = new double[n];
            
            double w, s, p;

            do
            {
                w = 0;

                for (int i = 0; i < n; i++)
                {
                    s = 0;

                    // Блок i <> 1 (в C# индексация с нуля, поэтому i != 0)
                    if (i != 0) 
                    {
                        for (int j = 0; j < i; j++)
                        {
                            s += A[i, j] * X0[j];
                        }
                    }

                    // Блок i <> n (в C# последний индекс n-1, поэтому i != n-1)
                    if (i != n - 1) 
                    {
                        for (int j = i + 1; j < n; j++)
                        {
                            s += A[i, j] * X0[j];
                        }
                    }

                    // Строго по блок-схеме: вычисление с делением на диагональный элемент
                    X[i] = (B[i] - s) / A[i, i];

                    p = Math.Abs(X[i] - X0[i]);

                    if (p > w)
                    {
                        w = p;
                    }
                }

                if (w > e)
                {
                    for (int i = 0; i < n; i++)
                    {
                        X0[i] = X[i];
                    }
                }

            } while (w > e);

            Console.WriteLine("Ответ:");
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine($"x{i + 1} = {X[i]:F3}");
            }

            Console.ReadLine();
        }
    }
}