Курсовая работа: Разработка программы проверки треугольности квадратной матрицы

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Введение

Матрица - математический объект, записываемый в виде прямоугольной таблицы элементов кольца или поля (например, целых, действительных или комплексных чисел), которая представляет собой совокупность строк и столбцов, на пересечении которых находятся её элементы. Количество строк и столбцов задаёт размер матрицы. Хотя исторически рассматривались, например, треугольные матрицы, в настоящее время говорят исключительно о матрицах прямоугольной формы, так как они являются наиболее удобными и общими.

Матрицы широко применяются в математике для компактной записи систем линейных алгебраических или дифференциальных уравнений. В этом случае количество строк матрицы соответствует числу уравнений, а количество столбцов - количеству неизвестных. В результате решение систем линейных уравнений сводится к операциям над матрицами. В математике рассматривается множество различных типов и видов матриц. В данной программе мы рассмотрим несколько из них:

Треугольная матрица - в линейной алгебре квадратная матрица, у которой все элементы, стоящие выше или ниже главной диагонали равны нулю.

Пример верхней треугольной матрицы:

Верхняя треугольная матрица - квадратная матрица , у которой все элементы ниже главной диагонали равны нулю: , при .

Пример нижней треугольной матрицы:

Нижняя треугольная матрица - квадратная матрица , у которой все элементы выше главной диагонали равны нулю: , при .

Квадратная матрица , где для всяких , называется диагональной матрицей.

Диагональная матрица имеет вид:

Такая матрица является одновременно верхней треугольной и нижней треугольной матрицей.

Нулевая матрица - это матрица, размера , все элементы которой равны нулю. Она обозначается как Z или O.

Нулевая матрица имеет вид:

Нулевая матрица и только она имеет ранг 0, это означает, что только нулевая матрица обладает свойством давать нулевой столбец при умножении справа на любой вектор-столбец, и аналогично для умножения на вектор-строки слева.

В курсовом проекте будут представлены все вышеперечисленные типы матриц.

1. Постановка задачи

Темой курсового проекта является “Разработка программыпроверки треугольности квадратной матрицы"

Используемый язык программирования - Python, поскольку на Pythonможно написать практически что угодно, начиная от веб-сайтов и заканчивая нейронными сетями.Pythonимеет простой синтаксис и обладает лаконичностью одновременно со сложными структурами, такими как генераторы, что позволяет писать программы со специфическими функционалом и требованиями.

Используемая ЭВМ:

-процессор: Intel® Pentium® CPU N3540 @ 2.16GHz;

-оперативная память: 4,00 ГБ;

-видеокарта: Intel HD graphics 4000 / 2ГБ;

-операционная система: Windows 10.

Следовательно, используемая ЭВМ подходит для реализации курсового проекта.

2. Структура и описание программы

Структура программы приведена на рисунке 2.1.

Рисунок 2.1 - Структура программы

Класс, используемый в основной программе, приведён в таблице 2.1.

Таблица 2.1 - Используемые классы

Класс

Назначение

NewMatrix

Основной класс программы, содержащий в себе все функции.

Функции, используемые в основной программе, приведены в таблице 2.2.

Таблица 2.2 - Используемые функции

Функция

Назначение

create_matrix(self, matrix)

Создание матрицы и её заполнение.

show_matrix(self, matrix)

Вывод матрицы на экран

check(self, matrix)

Проверка типа матрицы

Переменная, используемая, в основной программе, приведена в таблице 2.3.

Таблица 2.3 - Используемая переменная

Переменная

Назначение

A

Матрица А

Функции, используемые в классе NewMatrix, приведены в таблице 2.4.

Таблица 2.4 - Используемые функции

Функция

Назначение

__init__(self)

Инициализация класса NewMatrix

create_matrix(self, matrix)

Создание матрицы и её заполнение

first_check()

Проверка ввода размерности матрицы

second_check(n)

Проверка ввода элементов матрицы

show_matrix(self, matrix)

Вывод матрицы на экран

check(self, matrix)

Проверка типа матрицы

Переменные, используемые в классе NewMatrix,приведены в таблице 2.5.

Таблица 2.5 -Используемые переменные

Переменная

Назначение

matrix

Матрица

row

Строка матрицы

elem

Элемент строки матрицы

n

Размерность матрицы

maxx

Максимальный элемент матрицы

lowd

Количество нулевых элементов нижних диагоналей

uppd

Количество нулевых элементов верхних диагоналей

maind

Количество нулевых элементов главной диагонали

alld

Количество элементов нижних или верхний диагоналей

i

Счётчик строкматрицы

j

Счётчик элементов строк матрицы

3. Схемы алгоритма программы

3.1 Схема алгоритма основной программы

3.2 Схемы алгоритма класса NewMatrix

3.2.1 Схема алгоритма функции __init__

3.2.2 Схема алгоритма функции create_matrix

3.2.3 Схема алгоритма функции first_check

3.2.4 Схема алгоритма функции second_check

3.2.5 Схема алгоритма функции show_matrix

3.2.6 Схема алгоритма функции check

4. Отладка программы

Отладка представляет собой процесс поиска и устранения ошибок в программном проекте. Она занимает значительную часть рабочего времени программиста, нередко большую, чем составление программы. Практически любая программа перед началом отладки содержит хотя бы одну ошибку.

Виды ошибок программного обеспечения (ПО):

1) синтаксические ошибки (ошибки, обнаруживаемые компиляторы при выполнении синтаксического и частично семантического анализа);

2) ошибки компоновки (ошибки, обнаруживаемые компоновщиком при объединении модулей программы);

3) ошибки выполнения (ошибки, обнаруживаемые ОС, аппаратными средствами или пользователем при выполнении программы).

Во время отладки данной программы были обнаружены такие синтаксические ошибки:

1) неправильное имя класса - имя класса в Python всегда должно быть задано с большой буквы. Например: newMatrix - неправильный вариант, а NewMatrix - правильный вариант;

2) пропущена запятая при выводе переменной maind:

print("Количество нулевых элементов в ГЛАВНОЙ диагонали: " maind, "\n") - неправильные вариант,

print("Количество нулевых элементов в ГЛАВНОЙ диагонали: ", maind, "\n") -

правильный вариант.

Все ошибки были исправлены. Для проверки правильности работы программы, необходимо провести тестирование.

5. Оптимизация программы

Программу можно оптимизировать по двум критериям: времени работы и памяти. Чаще всего программы оптимизируют по времени работы, считая быстродействие наиболее необходимым. Оптимизацией по памяти часто занимаются тогда, когда появляется её нехватка и становится понятно, что она не безгранична.

Данная программа была оптимизирована по памяти, поскольку было использовано минимально возможное количество переменных.

Было уменьшено время выполнения программы за счет объединения циклов.

Рассмотрим неоптимизированный фрагмент кода:

foriinrange(len(self.matrix)):

for j in range(i):

if self.matrix[i][j] == 0:

lowd += 1

if self.matrix[len(self.matrix) - i - 1][len(self.matrix) - j - 1] == 0:

uppd += 1

alld += 1

for i in range(len(self.matrix)):

if self.matrix[i][i] == 0:

maind += 1

В этом фрагменте выделенный условный оператор вынесен в отдельный цикл, фрагмент может быть оптимизирован за счет объединения циклов. Он будет выглядеть следующим образом:

foriinrange(len(self.matrix)):

for j in range(i):

if self.matrix[i][j] == 0:

lowd += 1

if self.matrix[len(self.matrix) - i - 1][len(self.matrix) - j - 1] == 0:

uppd += 1

alld += 1

if self.matrix[i][i] == 0:

maind += 1

6. Тестирование программы

Тестирование - набор процедур и действий, предназначенных для демонстрации правильности работы программы в заданных режимах и внешних условиях. Цель тестирования - выявить наличие ошибок и правильность работы программы.

Для того, чтобы протестировать составленную программу, есть три способа тестирования, которые и были применены к данной программе:

1) тестирование в нормальных условиях:

2) тестирование в экстремальных условиях;

3) тестирование в экстремальных ситуациях.

6.1 Тестирование в нормальных условиях

Во время тестирования программное обеспечение было проверено в нормальных условиях. Для проверки программы в нормальных условиях для треугольной верхней матрицы были введены входные данные, представленные на рисунке 6.1.

Рисунок 6.1 - Входные данные программы для треугольной верхней матрицы

На рисунке 6.2 можно увидеть результаты работы программы для треугольной верхней матрицы.

Рисунок 6.2 - Результат работы программы для треугольной верхней матрицы

Для проверки программы в нормальных условиях для треугольной нижней матрицы были введены входные данные, представленные на рисунке 6.3.

Рисунок 6.3- Входные данные программы для треугольной нижней матрицы

На рисунке 6.4 можно увидеть результаты работы программы для треугольной нижней матрицы.

Рисунок 6.4- Результат работы программы для треугольной нижней матрицы

Для проверки программы в нормальных условиях для диагональной матрицы были введены входные данные, представленные на рисунке 6.5.

Рисунок 6.5- Входные данные программы для диагональной матрицы

На рисунке 6.6 можно увидеть результаты работы программы для диагональной матрицы.

Рисунок 6.6- Результат работы программы для диагональной матрицы

Для проверки программы в нормальных условиях для нулевой матрицы были введены входные данные, представленные на рисунке 6.7.

Рисунок 6.7- Входные данные программы для нулевой матрицы

На рисунке 6.8 можно увидеть результаты работы программы для нулевой матрицы.

Рисунок 6.8- Результат работы программы для нулевой матрицы

Для проверки программы в нормальных условиях для нетреугольной матрицы были введены входные данные, представленные на рисунке 6.9.

Рисунок 6.9- Входные данные программы для нетреугольной матрицы

На рисунке 6.10 можно увидеть результаты работы программы для нетреугольной матрицы.

Рисунок 6.10- Результат работы программы для нетреугольной матрицы

Процесс выполнения программы в нормальных условиях не прерван, а выходные данные корректны. Из этого можно сделать вывод, что программа в нормальных условиях работает правильно и без ошибок.

6.2 Тестирование программы в экстремальных условиях

Экстремальные условия проводятся при максимальном или минимальном количестве итераций. Введённые данные с минимальным количеством итераций представлены на рисунке 6.11.

Рисунок 6.11-Входные данные программы при минимальном значении итераций

На рисунке 6.12 отображены выходные данные при минимальных входных значениях для нулевой матрицы.

Рисунок 6.12 - Результаты работы программы при введении минимальных значений для нулевой матрицы

На рисунке 6.13 отображены выходные данные при минимальных входных значениях для диагональной матрицы.

Рисунок 6.13 - Результаты работы программы при введении минимальных значений для диагональной матрицы

Для тестирования в экстремальных условиях и максимальном количестве итерацийбыла введена матрица . На рисунке 6.14 отображена верхняя треугольная матрица размерностью .

Рисунок 6.14 - Результат работы программы при введенииверхней треугольной матрицы

Для тестирования в экстремальных условиях и максимальном количестве итерацийбыла введена матрица . На рисунке 6.15 отображена нижняя треугольная матрица размерностью . Также на рисунке 6.15 можно наблюдать работу алгоритма предотвращения ошибок.

Рисунок 6.15 - Результат работы программы при введении нижней треугольной матрицы

Для тестирования в экстремальных условиях и максимальном количестве итерацийбыла введена матрица . На рисунке 6.16 отображена диагональная матрица размерностью .

Рисунок 6.16 - Результат работы программы при введении диагональной матрицы

Для тестирования в экстремальных условиях и максимальном количестве итерацийбыла введена матрица . На рисунке 6.17 отображена нетреугольная матрица размерностью .

Рисунок 6.17 - Результат работы программы при введении диагональной матрицы

Процесс выполнения программы на предельных значениях не прерван, а выходные данные корректны. Из этого можно сделать вывод, что программа в экстремальных условиях работает правильно и без ошибок.

6.3 Тестирование в исключительных ситуациях

Для проверки в исключительных ситуациях будут вводится значения переменных, не удовлетворяющих условию.

Источник: https://otherreferats.allbest.ru/download/1000554/