Для умножения матрицы на число k создаются
временные переменные, в которые записываются данные исходной матрицы. Затем
создается пустая временная матрица, которая заполняется в цикле for путем
умножения каждого элемента матрицы на число k. Полученная матрица записывается
в матрицу-результат, которую можно будет вывести на экран.
.4Класс получения канонического вида и ранга
матрицы (Kan.cs)
В данном классе содержатся две матричные функции:void KV(int ind, Cache ch) - функция получения канонического вида выбранной матрицы:
В данной функции создаются временные переменные для записи в них исходной матрицы. Затем проверяется условие возможного выхода за пределы матрицы справа и снизу, после чего функция получает делитель для первой строки, и затем вычитает ее из ниже лежащих строк. И цикл повторяется так до последней строки.int Rang(int ind, Cache ch) - функция получения ранга выбранной матрицы:
В данной функции, прежде чем получить ранг
матрицы функция вызывает функцию получения канонического вида данной матрицы. И
затем при помощи перечисления канонической матрицы определяется ранг матрицы
путем подсчета не нулевых рядов.
.5Класс чтения матриц из файла (Re.cs)
В этом классе исходная матрица считывается из файла. Для этого:
создаются временные переменные для хранения открываемой матрицы, а также методы разделения элементов в строках открываемого файла;
создается декодер для русского текста (Encoding en = Encoding.GetEncoding(1251););
Создается окно для выбора открываемой матрицы и путем перечисления строк в открытом файле эти строки записываются во временное хранилище (List<string> mas = new List<string>();). Одновременно с записью матрицы происходит запись имени и фамилии автора создавшего эту матрицу, а также ее размер;
Затем полученный лист строк читается, и каждая
строка разбивается на элементы по разделителю, которые затем записываются во
временную матрицу. И эта матрица переносится в матрицу, которую можно вывести
на экран.
3.6Класс записи результатов вычислений в файл
(WR.cs)
Функция записи результатов принимает объект ch
класса Cache для доступа к записываемой матрице. Создается окно сохранения
данных где выбирается место хранения файла. После выбора места хранения в файл
записывается автор и матрица переписанная в массив строк ().
.7Класс произведения матриц (Umn.cs)
Функция произведения матриц принимает объект ch
класса Cache для доступа к умножаемым матрицам. Перед умножением проверяется
условие равенства количества столбцов первой матрицы строкам второй матрицы.
Если это условие не выполняется, то выдается сообщение об ошибке. После это
матрицы умножаются путем суммирования умножения соответствующих элементов в
строках и столбцах. Полученная матрица записывается в матрицу которую можно
вывести на экран.
.8Класс сложения матриц (Plus.cs)
Функция сложения матриц принимает объект ch
класса Cache для доступа к слаживаемым матрицам. Матрицы слаживаются путем
перечисления всех элементов матрицы и сложения соответствующих элементов.
Результат записывается в матрицу доступную для вывода на экран. Также
проверяется условие равности размеров слаживаемых матриц.
.9Класс проверки входа в программу (Parol.cs)
Функция проверки входа в программу принимает строковые данные введенных логина пароля. Эти данные проверяются по двум листам возможных логинов и вращается подтверждение входа.
.10Класс получения определителя матрицы (Opr.cs)
Функция создает временное хранилище другого формата для вычисления определителя выбранной матрицы. Функция принимает индекс матрицы и объект класса Cache для доступа к матрице. Затем выбранная матрица записывается во временное хранилище которое используется в вычислении определителя методом Гаусса:
Используем перечисление листа, а число k приравниваем к числу i;
Через второе перечисление проверяем, какое из соответствующих чисел в соседних рядах больше, если первое - число k приравнивается к числу j.
Если второе число меньше установленной точности определитель обнуляется.
Вызывается функция перестановки строк местами (Swap(ref M, i, k););
После проверки остальных условий определитель умножается на минус единицу или на другой элемент.
Цикл повторяется до получения результата и
определитель возвращается в вызвавший его обработчик.
.11Класс получения разности матрицы (Minus.cs)
Функция принимает объект класса Cache для
доступа к матрицам. После проверки равности матриц путем перечисления
соответствующие элементы матрицы два отнимаются от соответствующих элементов
матрицы один. Результат записывается в матрицу доступную для вывода результата
на экран.
3.12Класс получения минора матрицы (Mab.cs)
Функция принимает индекс матрицы, положение
вычисляемого минора и объект класса Cache для доступа к выбранной матрице.
Создаются одна временная матрица с удаленной строкой, и вторая с удаленным
потом столбцом. Получившуюся матрицу записываем в результирующую матрицу и
вызываем функцию подсчета определителя через объект класса Opr.cs. Если сумма
номеров строки и столбца четная - минор равен определителю, если нечетная -
минор равен минус определителю. Полученный минор возвращается в обработчик его
вызвавший.
.13Класс копирования результата в матрицу
(Copir.cs)
Функция принимает индекс матрицы и объект класса
Cache для доступа к выбранной матрице. Выбранная матрица приравнивает свои
значения к матрице-результату полученную после вычислений.
.14 Класс хранения матричных данных (Cache.cs)
Класс содержит переменные для хранения открытых
матриц и результатов их вычислений. Также класс имеет функцию для записи этих
переменных доступную из класса чтения файла (Re.cs).
4.Описание интерфейса
.1Форма входа (рис. 3)
Рис. 3. Форма входа
На форме входа расположены следующие элементы:
Текстовый блок «Логин», в которое пользователь вводит свой логин, и который получает фокус при загрузке.
Форма для ввода пароля, вводимого пользователем. Эта форма получает фокус при нажатии клавиши Enter в поле «Логин». При нажатии клавиши Enter в этом поле вызывается обработчик нажатия клавиши «Войти».
Клавиша «Войти». При ее нажатии выполняется вход
в программу (при правильно введенных данных).
4.2 Главное окно (рис. 4)
Рис. 4. Главное окно
программа матрица данные интерфейс
В главном окне расположены следующие элементы:
В верхней части расположено меню программы, содержащее меню «Документ», «Функции» и «Справка»:
Меню «Документ» (рис. 5) содержит следующие элементы: «Новый» - открытие нового окно программы для работы с другими матрицами; «Открыть» - позволяет открыть первую или вторую матрицу, причем для некоторых функций важен порядок матриц; «Сохранить как…» - позволяет сохранить полученный результат с выбором места хранения и выбором формата файла; «Закрыть» - закрывает текущие вычисления; «Выход» - выход и закрытие программы.
Меню «Функции» (рис. 6) содержит следующие элементы: одинаковые функции для первой и второй матриц: «Транспонировать» - производит транспонирование матрицы; «Умножить на число k» - умножение матрицы на число k; «Обратить» - вычисление обратной матрицы; «Определитель» - вычисление определителя матрицы; «Минор» - вычисление минора матрицы по введенным числам a и b; «Ранг» - подсчет ранга матрицы; «Канонический вид» - получение канонического вида матрицы; «Копировать из результата» - заполнение матрицы результатами предыдущих вычислений.
А также в меню «Функции» присутствуют такие элементы как «Сложение» - сложение матриц, «Вычитание» - вычитание второй матрицы из первой, «Произведение» - умножение первой матрицы на вторую, «Частное» - деление первой матрицы на вторую.
Меню «Справка» (рис. 7) содержит следующие
элементы: «О программе» - вызов окна информации о программе (рис. 8); «Справка»
- вызов справки по программе (рис. 9).
Рис. 5. Меню «Документ»
Рис. 6. Меню «Функции»
Рис. 7. Меню «Справка»
Рис. 8. О программе
Рис. 9. Справка по программе
Ниже расположена панель функций (рис. 10), которая полностью повторяет меню «Функции» плюс возможность выбора матрицы, к которой применяется действие и поля для ввода чисел a, b, k. Вся панель функций представлена в графическом виде.
Рис. 10. Панель функций
В средней части расположены блоки отображения исходных и результирующей матриц.
В нижней части расположены поля «Результат» в
которых выводятся результаты подсчета определителя, минора и ранга матрицы.
. Результаты работы программы
В результатах работы покажем результаты выполнения некоторых функций:
Произведение матриц (рис. 11);
Рис. 11. Произведение матриц
Деление матриц (рис. 12);
Обратная матрица плюс определитель (рис. 13) и другие функции.
Рис. 12. Деление матриц
Рис. 13. Определитель плюс обратная матрица
Заключение
В результате выполнения курсовой работы была
создана программа названная «Матрица 1.0» - набор функций для работы с
матрицами. Эта программа позволяет выполнять следующие функции: открытие и
сохранение файла плюс авторство файла. Подсчет таких матричных функций как
транспонирование, умножение на число k, подсчет обратной матрицы, определитель,
минор, ранг, канонический вид, копирование из результата в матрицу, сложение
матриц, вычитание, произведение и частное матриц. Также в программе содержится
окно «О программе» и справка по программе. Были использованы различные техники
при работе с функциями, переменными, массивами. Приложение содержит различные
виды форм технологии Windows Presentation Foundation. Программа отличается
простотой интерфейса, интуитивно понятным меню и лёгкостью управления.
Список литературы
.C#: учебный курс. Герберт Шилдт. - СПб.: Питер; К.: Издательская группа BHV, 2011. - 512с.
2.Мэтью Мак-Дональд WPF: Windows Presentation Foundation в .NET 4.0 с примерами на C# 2010 для профессионалов = Pro WPF in C# 2010: Windows Presentation Foundation with .NET 4.0. - М.: «Вильямс», 2011. - С. 1024.
3.С# 2008: ускоренный курс для профессионалов. Трей Неш. - ООО «ИД Вильямс», 2008. - 576с.