Править код./Помочь дописать - C#
Формулировка задачи:
Всем привет,помогите подправить код и немного дописать.
В коде в коментах всплывает условие.
using System; using System.Text; namespace ConsoleApplication43 { class Program { static void Main(string[] args) { Console.Title = "Матричный метод решения систем"; double[,] a = new double[3, 3] { { 1, 4, 7 }, { 9, 8, 12 }, { 6, 1, 0 } }; double[,] S = new double[3, 3]; Console.WriteLine("Имеем матрицу 3х3"); for (int i = 0; i < 3; i++) { Console.WriteLine(); for (int j = 0; j < i; j++) Console.Write(" {0}", a[i, j]); } //определитель матрици double d = a[0, 0] * a[1, 1] * a[2, 2] - a[0, 0] * a[1, 2] * a[2, 1] - a[0, 1] * a[1, 0] * a[2, 2] + a[0, 1] * a[1, 2] * a[2, 0] + a[0, 2] * a[1, 0] * a[2, 1] - a[0, 2] * a[1, 1] * a[2, 0]; Console.WriteLine("\nОпределитель матрицы={0}", d); Console.Write("----------------\n"); if (d == 0) { Console.WriteLine("Матрица является выражденной."); } //Транспонирование матрици double tmp; for (int i = 1; i < 3; i++) { for (int j = 0; j < i; j++) { tmp = a[i, j]; a[i, j] = a[j, i]; a[j, i] = tmp; } } //Тут хотелось бы вывести транспонированную матрицу,да бы убедиться то , что приведена верно. //Формирование союзной матрицы(Формула взята с учебника) for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { S[0, 0] = a[1, 1] * a[2, 2] - a[1, 2] * a[2, 1]; S[0, 1] = a[2, 0] * a[2, 1] - a[0, 1] * a[2, 2]; S[0, 2] = a[1, 0] * a[2, 1] - a[1, 1] * a[2, 0]; S[1, 0] = a[2, 1] * a[0, 2] - a[0, 1] * a[2, 2]; S[1, 1] = a[0, 0] * a[2, 2] - a[0, 2] * a[2, 0]; S[1, 2] = a[0, 1] * a[2, 0] - a[0, 0] * a[2, 1]; S[2, 0] = a[0, 1] * a[1, 2] - a[1, 1] * a[0, 2]; S[2, 1] = a[1, 0] * a[0, 2] - a[0, 0] * a[1, 2]; S[2, 2] = a[0, 0] * a[1, 1] - a[0, 1] * a[1, 0]; } } /*Итак получаем: a[i,j] - матрица 3x3; * d - определитель матрицы; * tmp - транспонированная матрица; * S[i,j] - союзная матрица;*/ //Формируем обратную матрицу. Console.ReadKey(); } } }
До определителя все впорядки:
using System; using System.Text; namespace ConsoleApplication43 { class Program { static void Main(string[] args) { Console.Title = "Матричный метод решения систем"; double[,] a = new double[3, 3] { { 1, 4, 7 }, { 9, 8, 12 }, { 6, 1, 0 } }; double[,] S = new double[3, 3]; Console.WriteLine("Имеем матрицу 3х3"); for (int i = 0; i < 3; i++) { Console.WriteLine(); for (int j = 0; j < 3; j++) Console.Write(" {0}", a[i, j]); } //определитель матрици double d = a[0, 0] * a[1, 1] * a[2, 2] - a[0, 0] * a[1, 2] * a[2, 1] - a[0, 1] * a[1, 0] * a[2, 2] + a[0, 1] * a[1, 2] * a[2, 0] + a[0, 2] * a[1, 0] * a[2, 1] - a[0, 2] * a[1, 1] * a[2, 0]; Console.WriteLine("\nОпределитель матрицы={0}", d); Console.Write("----------------\n"); if (d == 0) { Console.WriteLine("Матрица является выражденной."); } //Транспонирование матрици double tmp; for (int i = 1; i < 3; i++) { for (int j = 0; j < 3; j++) { tmp = a[i, j]; a[i, j] = a[j, i]; a[j, i] = tmp; } } //Тут хотелось бы вывести транспонированную матрицу,да бы убедиться то , что приведена верно. //Формирование союзной матрицы(Формула взята с учебника) for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { S[0, 0] = a[1, 1] * a[2, 2] - a[1, 2] * a[2, 1]; S[0, 1] = a[2, 0] * a[2, 1] - a[0, 1] * a[2, 2]; S[0, 2] = a[1, 0] * a[2, 1] - a[1, 1] * a[2, 0]; S[1, 0] = a[2, 1] * a[0, 2] - a[0, 1] * a[2, 2]; S[1, 1] = a[0, 0] * a[2, 2] - a[0, 2] * a[2, 0]; S[1, 2] = a[0, 1] * a[2, 0] - a[0, 0] * a[2, 1]; S[2, 0] = a[0, 1] * a[1, 2] - a[1, 1] * a[0, 2]; S[2, 1] = a[1, 0] * a[0, 2] - a[0, 0] * a[1, 2]; S[2, 2] = a[0, 0] * a[1, 1] - a[0, 1] * a[1, 0]; } } /*Итак получаем: a[i,j] - матрица 3x3; * d - определитель матрицы; * tmp - транспонированная матрица; * S[i,j] - союзная матрица;*/ //Формируем обратную матрицу. Console.ReadKey(); } } }
1) Ошибка в 37 строке.
using System; using System.Text; namespace ConsoleApplication43 { class Program { static void Main(string[] args) { Console.Title = "Матричный метод решения систем"; double[,] a = new double[3, 3] { { 1, 4, 7 }, { 9, 8, 12 }, { 6, 1, 0 } }; double[,] S = new double[3, 3]; Console.WriteLine("Имеем матрицу 3х3"); for (int i = 0; i < 3; i++) { Console.WriteLine(); for (int j = 0; j < 3; j++) Console.Write(" {0}", a[i, j]); } //определитель матрици double d = a[0, 0] * a[1, 1] * a[2, 2] - a[0, 0] * a[1, 2] * a[2, 1] - a[0, 1] * a[1, 0] * a[2, 2] + a[0, 1] * a[1, 2] * a[2, 0] + a[0, 2] * a[1, 0] * a[2, 1] - a[0, 2] * a[1, 1] * a[2, 0]; Console.WriteLine("\nОпределитель матрицы={0}", d); Console.Write("----------------\n"); if (d == 0) { Console.WriteLine("Матрица является выражденной."); } //Транспонирование матрици double tmp; for (int i = 1; i < 3; i++) { for (int j = 0; j < 3; j++) { tmp = a[i, j]; a[i, j] = a[j, i]; a[j, i] = tmp; } } Console.WriteLine("{0}", tmp); //Тут хотелось бы вывести транспонированную матрицу,да бы убедиться то , что приведена верно. //Формирование союзной матрицы(Формула взята с учебника) for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { S[0, 0] = a[1, 1] * a[2, 2] - a[1, 2] * a[2, 1]; S[0, 1] = a[2, 0] * a[2, 1] - a[0, 1] * a[2, 2]; S[0, 2] = a[1, 0] * a[2, 1] - a[1, 1] * a[2, 0]; S[1, 0] = a[2, 1] * a[0, 2] - a[0, 1] * a[2, 2]; S[1, 1] = a[0, 0] * a[2, 2] - a[0, 2] * a[2, 0]; S[1, 2] = a[0, 1] * a[2, 0] - a[0, 0] * a[2, 1]; S[2, 0] = a[0, 1] * a[1, 2] - a[1, 1] * a[0, 2]; S[2, 1] = a[1, 0] * a[0, 2] - a[0, 0] * a[1, 2]; S[2, 2] = a[0, 0] * a[1, 1] - a[0, 1] * a[1, 0]; } } /*Итак получаем: a[i,j] - матрица 3x3; * d - определитель матрицы; * tmp - транспонированная матрица; * S[i,j] - союзная матрица;*/ //Формируем обратную матрицу. Console.ReadKey(); } } }
Решение задачи: «Править код./Помочь дописать»
textual
Листинг программы
using System; namespace ConsoleApplication46 { class Program { static void Main(string[] args) { double[,] a = new double[3, 3] { { 2, 1, 1 }, { 1, -1, 0 }, { 3, -1, 2 } }; Console.WriteLine("Имеем матрицу 3х3"); for (int i = 0; i < 3; i++) { Console.WriteLine(); for (int j = 0; j < 3; j++) Console.Write(" {0}", a[i, j]); } //определитель матрици double dat = a[0, 0] * a[1, 1] * a[2, 2] - a[0, 0] * a[1, 2] * a[2, 1] - a[0, 1] * a[1, 0] * a[2, 2] + a[0, 1] * a[1, 2] * a[2, 0] + a[0, 2] * a[1, 0] * a[2, 1] - a[0, 2] * a[1, 1] * a[2, 0]; Console.WriteLine("\nОпределитель матрицы={0}", dat); Console.Write("----------------\n"); if (dat == 0) { Console.WriteLine("Матрица является выражденной."); return; } double[,] mT = new double[3, 3]; // Транспонируем матрицу for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { mT[i, j] = a[j, i]; } } // Вывод результата Console.WriteLine("Транспонированая матрица:\n"); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { Console.Write(" {0}", mT[i, j]); } Console.WriteLine(); } double[,] Y = new double[3, 3]; //Найдем союзную матрицу. //Формирование союзной матрицы for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { Y[0, 0] = a[1, 0] * a[2, 2] - a[1, 2] * a[2, 1]; Y[0, 1] = a[1, 2] * a[2, 0] - a[1, 0] * a[2, 2]; Y[0, 2] = a[1, 1] * a[2, 1] - a[2, 0] * a[1, 1]; Y[1, 0] = a[0, 2] * a[2, 1] - a[0, 1] * a[2, 2]; Y[1, 1] = a[0, 0] * a[2, 2] - a[2, 0] * a[0, 2]; Y[1, 2] = a[2, 0] * a[0, 1] - a[0, 0] * a[2, 1]; Y[2, 0] = a[0, 1] * a[1, 2] - a[1, 1] * a[0, 2]; Y[2, 1] = a[0, 2] * a[1, 0] - a[0, 0] * a[1, 2]; Y[2, 2] = a[0, 0] * a[1, 1] - a[0, 1] * a[1, 0]; } } Console.WriteLine("Союзная матрица"); for (int i = 0; i < 3; i++) { Console.WriteLine(); for (int j = 0; j < 3; j++) { Console.Write(" {0}", Y[i, j]); } } //обратная матрица double[,] obr = new double[3, 3]; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { Y[i, j] = Y[i, j] / dat; } } Console.WriteLine("\nОбратная матрица"); for (int i = 0; i < 3; i++) { Console.WriteLine(); for (int j = 0; j < 3; j++) { Console.Write(" {0:f1}", Y[i, j]); } } Console.ReadKey(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д