Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
ГЛАВА 4. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ⇐ ПредыдущаяСтр 4 из 4
Модуль сложения размерности 3x3 Сложение матрицы A и B, в результате чего получаем индексы новой матрицы. double otvet1 = ma1[0, 0] + mb1[0, 0]; //X11 double otvet2 = ma1[0, 1] + mb1[0, 1]; //X12 double otvet3 = ma1[0, 2] + mb1[0, 2]; //X13 double otvet4 = ma1[1, 0] + mb1[1, 0]; //X21 double otvet5 = ma1[1, 1] + mb1[1, 1]; //X22 double otvet6 = ma1[1, 2] + mb1[1, 2]; //X23 double otvet7 = ma1[2, 0] + mb1[2, 0]; //X31 double otvet8 = ma1[2, 1] + mb1[2, 1]; //X32 double otvet9 = ma1[2, 2] + mb1[2, 2]; //X33 Модуль вычитания Вычитание матриц A и B, все идентично модулю сложения double otvet1 = ma1[0, 0] - mb1[0, 0]; //X11 double otvet2 = ma1[0, 1] - mb1[0, 1]; //X12 double otvet3 = ma1[0, 2] - mb1[0, 2]; //X13 double otvet4 = ma1[1, 0] - mb1[1, 0]; //X21 double otvet5 = ma1[1, 1] - mb1[1, 1]; //X22 double otvet6 = ma1[1, 2] - mb1[1, 2]; //X23 double otvet7 = ma1[2, 0] - mb1[2, 0]; //X31 double otvet8 = ma1[2, 1] - mb1[2, 1]; //X32 double otvet9 = ma1[2, 2] - mb1[2, 2]; //X33 Модуль умножения Умножение матрицы A на матрицу B, умножение происходит по правилу строчку на столбик. double otvet1 = ma1[0, 0] * mb1[0, 0] + ma1[0, 1] * mb1[1, 0] + ma1[0, 2] * mb1[2, 0]; //X11 double otvet2 = ma1[0, 0] * mb1[0, 1] + ma1[0, 1] * mb1[1, 1] + ma1[0, 2] * mb1[2, 1]; //X12 double otvet3 = ma1[0, 0] * mb1[0, 2] + ma1[0, 1] * mb1[1, 2] + ma1[0, 2] * mb1[2, 2]; //X13 double otvet4 = ma1[1, 0] * mb1[0, 0] + ma1[1, 1] * mb1[1, 0] + ma1[1, 2] * mb1[2, 0]; //X21 double otvet5 = ma1[1, 0] * mb1[0, 1] + ma1[1, 1] * mb1[1, 1] + ma1[1, 2] * mb1[2, 1]; //X22 double otvet6 = ma1[1, 0] * mb1[0, 2] + ma1[1, 1] * mb1[1, 2] + ma1[1, 2] * mb1[2, 2]; //X23 double otvet7 = ma1[2, 0] * mb1[0, 0] + ma1[2, 1] * mb1[1, 0] + ma1[2, 2] * mb1[2, 0]; //X31 double otvet8 = ma1[2, 0] * mb1[0, 1] + ma1[2, 1] * mb1[1, 1] + ma1[2, 2] * mb1[2, 1]; //X32 double otvet9 = ma1[2, 0] * mb1[0, 2] + ma1[2, 1] * mb1[1, 2] + ma1[2, 2] * mb1[2, 2]; //X33 Модуль определителя Определитель матрицы A 3х3 методом треугольника. double ch1 = ma1[0, 0] * ma1[1, 1] * ma1[2, 2]; //произведен. главной диагон. double ch2 = ma1[0, 1] * ma1[1, 2] * ma1[2, 0]; //произведения 1 треугольника double ch3 = ma1[1, 0] * ma1[2, 1] * ma1[0, 2]; //произведения 2 треугольника double ch4 = ma1[0, 2] * ma1[1, 1] * ma1[2, 0]; //произведен. побочной диагон. double ch5 = ma1[1, 2] * ma1[2, 1] * ma1[0, 0]; //произведения 1 треугольника double ch6 = ma1[0, 1] * ma1[1, 0] * ma1[2, 2]; //произведения 2 треугольника double detma1 = ch1 + ch2 + ch3 - ch4 - ch5 - ch6; //ответ
Модуль обратной матрицы Определитель матрицы A 3х3 double ch1 = ma1[0, 0] * ma1[1, 1] * ma1[2, 2]; double ch2 = ma1[0, 1] * ma1[1, 2] * ma1[2, 0]; double ch3 = ma1[1, 0] * ma1[2, 1] * ma1[0, 2]; double ch4 = ma1[0, 2] * ma1[1, 1] * ma1[2, 0]; double ch5 = ma1[1, 2] * ma1[2, 1] * ma1[0, 0]; double ch6 = ma1[0, 1] * ma1[1, 0] * ma1[2, 2]; double detma1 = ch1 + ch2 + ch3 - ch4 - ch5 - ch6;
if (detma1 == 0) //Если определитель матрицы A равен 0, то выводится окно сообщение { MessageBox.Show(" Определитель матрицы A равен: " + detma1 + ", значит обратной матрицы не существует! ", " Внимание! " ); } else //Иначе продолжаем действия { Получение дополнительных миноров и алгебраических дополнений double a11 = ma1[1, 1] * ma1[2, 2] - ma1[2, 1] * ma1[1, 2]; double a12 = -(ma1[1, 0] * ma1[2, 2] - ma1[2, 0] * ma1[1, 2]); double a13 = ma1[1, 0] * ma1[2, 1] - ma1[2, 0] * ma1[1, 1]; double a21 = -(ma1[0, 1] * ma1[2, 2] - ma1[2, 1] * ma1[0, 2]); double a22 = ma1[0, 0] * ma1[2, 2] - ma1[2, 0] * ma1[0, 2]; double a23 = -(ma1[0, 0] * ma1[2, 1] - ma1[2, 0] * ma1[0, 1]); double a31 = ma1[0, 1] * ma1[1, 2] - ma1[1, 1] * ma1[0, 2]; double a32 = -(ma1[0, 0] * ma1[1, 2] - ma1[1, 0] * ma1[0, 2]); double a33 = ma1[0, 0] * ma1[1, 1] - ma1[1, 0] * ma1[0, 1]; double kek = 1 / (Convert.ToDouble(detma1)); //Получаем 1 деленное на определитель Получение обратной матрицы A double obr1 = kek * (a11); double obr2 = kek * (a21); double obr3 = kek * (a31); double obr4 = kek * (a12); double obr5 = kek * (a22); double obr6 = kek * (a32); double obr7 = kek * (a13); double obr8 = kek * (a23); double obr9 = kek * (a33); Модуль деления Определитель матрицы B 3х3 double ch1 = mb1[0, 0] * mb1[1, 1] * mb1[2, 2]; double ch4 = mb1[0, 2] * mb1[1, 1] * mb1[2, 0]; double ch2 = mb1[0, 1] * mb1[1, 2] * mb1[2, 0]; double ch5 = mb1[1, 2] * mb1[2, 1] * mb1[0, 0]; double ch3 = mb1[1, 0] * mb1[2, 1] * mb1[0, 2]; double ch6 = mb1[0, 1] * mb1[1, 0] * mb1[2, 2]; double detmb1 = ch1 + ch2 + ch3 - ch4 - ch5 - ch6;
if (detmb1 == 0) // Если определитель матрицы В равен 0, то выводится окно сообщение { MessageBox.Show(" Определитель матрицы B равен: " + detmb1 + ", значит обратной матрицы не существует и деление невозможно! ", " Внимание! " ); } else //Иначе продолжаем действия { Получение дополнительных миноров и алгебраических дополнений double b11 = mb1[1, 1] * mb1[2, 2] - mb1[2, 1] * mb1[1, 2]; double b12 = -(mb1[1, 0] * mb1[2, 2] - mb1[2, 0] * mb1[1, 2]); double b13 = mb1[1, 0] * mb1[2, 1] - mb1[2, 0] * mb1[1, 1]; double b21 = -(mb1[0, 1] * mb1[2, 2] - mb1[2, 1] * mb1[0, 2]); double b22 = mb1[0, 0] * mb1[2, 2] - mb1[2, 0] * mb1[0, 2]; double b23 = -(mb1[0, 0] * mb1[2, 1] - mb1[2, 0] * mb1[0, 1]); double b31 = mb1[0, 1] * mb1[1, 2] - mb1[1, 1] * mb1[0, 2]; double b32 = -(mb1[0, 0] * mb1[1, 2] - mb1[1, 0] * mb1[0, 2]); double b33 = mb1[0, 0] * mb1[1, 1] - mb1[1, 0] * mb1[0, 1]; double kek = 1 / (Convert.ToDouble(detmb1)); //Получаем 1 деленное на определитель
Получение обратной матрицы B 3х3 double obr1 = kek * (b11); double obr2 = kek * (b21); double obr3 = kek * (b31); double obr4 = kek * (b12); double obr5 = kek * (b22); double obr6 = kek * (b32); double obr7 = kek * (b13); double obr8 = kek * (b23); double obr9 = kek * (b33);
Присваиваем значения буферной матрице textBox44.Text = obr1.ToString(); textBox45.Text = obr2.ToString(); textBox46.Text = obr3.ToString(); textBox47.Text = obr4.ToString(); textBox48.Text = obr5.ToString(); textBox49.Text = obr6.ToString(); textBox50.Text = obr7.ToString(); textBox51.Text = obr8.ToString(); textBox52.Text = obr9.ToString();
Буферная матрица 3х3 bufer2[0, 0] = double.Parse(textBox44.Text); bufer2[0, 1] = double.Parse(textBox45.Text); bufer2[0, 2] = double.Parse(textBox46.Text); bufer2[1, 0] = double.Parse(textBox47.Text); bufer2[1, 1] = double.Parse(textBox48.Text); bufer2[1, 2] = double.Parse(textBox49.Text); bufer2[2, 0] = double.Parse(textBox50.Text); bufer2[2, 1] = double.Parse(textBox51.Text); bufer2[2, 2] = double.Parse(textBox52.Text); } Умножение матрицы A на обратную матрицу В-1 double otvet1 = ma1[0, 0] * bufer2[0, 0] + ma1[0, 1] * bufer2[1, 0] + ma1[0, 2] * bufer2[2, 0]; double otvet2 = ma1[0, 0] * bufer2[0, 1] + ma1[0, 1] * bufer2[1, 1] + ma1[0, 2] * bufer2[2, 1]; double otvet3 = ma1[0, 0] * bufer2[0, 2] + ma1[0, 1] * bufer2[1, 2] + ma1[0, 2] * bufer2[2, 2]; double otvet4 = ma1[1, 0] * bufer2[0, 0] + ma1[1, 1] * bufer2[1, 0] + ma1[1, 2] * bufer2[2, 0]; double otvet5 = ma1[1, 0] * bufer2[0, 1] + ma1[1, 1] * bufer2[1, 1] + ma1[1, 2] * bufer2[2, 1]; double otvet6 = ma1[1, 0] * bufer2[0, 2] + ma1[1, 1] * bufer2[1, 2] + ma1[1, 2] * bufer2[2, 2]; double otvet7 = ma1[2, 0] * bufer2[0, 0] + ma1[2, 1] * bufer2[1, 0] + ma1[2, 2] * bufer2[2, 0]; double otvet8 = ma1[2, 0] * bufer2[0, 1] + ma1[2, 1] * bufer2[1, 1] + ma1[2, 2] * bufer2[2, 1]; double otvet9 = ma1[2, 0] * bufer2[0, 2] + ma1[2, 1] * bufer2[1, 2] + ma1[2, 2] * bufer2[2, 2]; Вывод В данной главе было рассмотрено программный код шести модулей с их описанием.
ГЛАВА 5. ОЦЕНКА ЭФФЕКТИВНОСТИ Интерфейс программы Программное обеспечение «Матричный калькулятор» теперь производит операции матриц размерностей 2х2 и 3х3, а также находит определитель и обратную матрицу. Интерфейс программы разделен на две панели, то есть для работы с матрицами 2х2 и 3х3. У каждой матрицы можно отдельно найти определитель или обратную матрицу. Матрицы «Ответ» выключено редактирование, чтобы избежать ошибок. Рисунок 5.1 Интерфейс программы Руководство пользователя Чтобы решить пример, пользователю необходимо ввести значения матриц нужной размерности и выбрать тип операции. Для того чтобы найти определитель или обратную матрицу, пользователю необходимо ввести значения в одну из матриц нужной размерности. Для удобства пользователям имеется функция очистки нужной матрицы. Вывод В данной главе был рассмотрен интерфейс программы и руководство. ЗАКЛЮЧЕНИЕ В ходе курсовой работы было рассмотрено, что такое матрица, как и кем, была создана. Было описано, где применяется, основные операции, программы, имеющиеся на сегодняшний день и цели работы. Рассмотрены четыре способа решения данной задачи, и каким способом будет решена эта задача. В качестве средства была выбрана среда программирования MS Visual Studio 2015 и язык программирования C#. А также были описаны шесть модулей программы в виде блок-схем и программного кода. В конце данной работы был описан интерфейс программы и руководство пользователя. В результате данной работы было получено работоспособное программное обеспечение «Матричный калькулятор», которое планировалось вначале данной работы. Теперь программа выполняет все функции, которые упоминались в цели работы. Данное программное обеспечение могут использовать студенты СФЮК для решения своих задач. |
Последнее изменение этой страницы: 2017-04-12; Просмотров: 694; Нарушение авторского права страницы