Решение треугольной матрицы: нужен алгоритм решения - C#

Узнай цену своей работы

Формулировка задачи:

Имеется матрица, приведенная к треугольному виду. Задача - решить ее(найти x1,x2...xn). Помогите с алгоритмом решения.

Решение задачи: «Решение треугольной матрицы: нужен алгоритм решения»

textual
Листинг программы
            Console.WriteLine("Введите порядок матрицы:");
            int N = int.Parse(Console.ReadLine());
            Console.WriteLine();
 
            double[,] Slay = new double[N, N]; //матрица коэффициентов
            double[] Slay_B = new double[N]; //матрица свободных членов
            double[] Slay_X = new double[N]; // решение
            int i, j, k;
            double kof, sum;
            
            Console.WriteLine("Введите коэффициенты матрицы:");
            for (i = 0; i < N; i++)
                for (j = 0; j < N; j++)
                {
                    Console.Write("a{0}{1} = ", i+1, j+1);
                    Slay[i, j] = double.Parse(Console.ReadLine());
                }
            Console.WriteLine();
           
            Console.WriteLine("Введите свободные члены:");
            for (i = 0; i < N; i++)
            {
                Console.Write("b{0} = ", i + 1);
                Slay_B[i] = double.Parse(Console.ReadLine());
            }
            Console.WriteLine();
            
            Console.WriteLine("Вывод матрицы");
            for (i = 0; i < N; i++)
            {
                for (j = 0; j < N; j++)
                {
                    Console.Write(Slay[i, j]);
                    Console.Write("*x{0}", j + 1);
                    Console.Write("\t");
                }
                Console.Write("= ");
                Console.WriteLine(Slay_B[i]);
            }
               
            //приведение матрицы к треугольному виду
            for (k = 0; k < N - 1; k++)
            {
                for (i = k + 1; i < N; i++)
                {
                    kof = -1 * Slay[i, k] / Slay[k, k];
                    Slay_B[i] = Slay_B[i] + kof * Slay_B[k];
                    for (j = k; j < N; j++)
                    {
                        Slay[i, j] = Slay[i, j] + Slay[k, j] * kof;
                    }
                }
            }
            Console.WriteLine();
           
            Console.WriteLine("Матрица, приведенная к треугольному виду");
            for (i = 0; i < N; i++)
            {
                for (j = 0; j < N; j++)
                {
                    Console.Write("{0:0.000}",Slay[i, j]);
                    Console.Write("*x{0} ", j + 1);
                    Console.Write("\t");
                }
                Console.Write("= ");
                Console.WriteLine("{0:0.000}", Slay_B[i]);
            }
            Console.WriteLine();
 
            //вычисление результата
            Slay_X[N - 1] = Slay_B[N - 1] / Slay[N - 1, N - 1];
            sum = 0;
            for (int z = N - 2; z >= 0; --z)
            {
                sum = 0;
                for (j = z + 1; j < N; j++)
                {
                    sum = sum + Slay[z, j] * Slay_X[j];
                    Slay_X[z] = (Slay_B[z] - sum) / Slay[z, z];
                }
            }
 
            Console.WriteLine("Результат");
            for (i = 0; i < N; i++)
            {
                Console.WriteLine("X{0} = {1:0.000}", i + 1, Slay_X[i]);
            }
            Console.ReadKey();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5
Похожие ответы