Решение треугольной матрицы: нужен алгоритм решения - 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д