DAS_2024_1/kadyrov_aydar_lab_6/README.md

35 lines
4.2 KiB
Markdown
Raw Normal View History

2024-12-01 21:48:26 +04:00
Лабораторная работа 6. Определение детерминанта матрицы с помощью параллельных вычислений
Задание
2024-11-12 22:48:48 +04:00
Требуется сделать два алгоритма: обычный и параллельный. В параллельном алгоритме предусмотреть ручное задание количества потоков, каждый из которых будет выполнять нахождение отдельной группы множителей.
2024-12-01 21:48:26 +04:00
Описание работы программы
Программа реализует вычисление детерминанта квадратной матрицы с использованием двух алгоритмов: обычного и параллельного.
2024-11-12 22:48:48 +04:00
2024-12-01 21:48:26 +04:00
1. Обычный алгоритм
2024-11-12 22:48:48 +04:00
Функция minor(matrix, row, col) - Эта функция используется для удаления строки и столбца из матрицы, чтобы получить минор, который затем будет использован для вычисления детерминанта с помощью рекурсии.
Функция determinant(matrix) - Эта функция вычисляет детерминант матрицы с использованием метода Лапласа. Если матрица — это 2x2, то вычисление происходит напрямую. Для больших матриц она рекурсивно вызывает себя для подматриц.
2024-12-01 21:48:26 +04:00
2. Параллельный алгоритм
2024-11-12 22:48:48 +04:00
parallel_determinant(matrix, num_threads=4) — Это функция, которая распределяет вычисления по нескольким потокам для ускорения работы.
worker(start_row, end_row) — Это вспомогательная функция, которая выполняет вычисления детерминанта на одном из диапазонов строк матрицы в параллельном потоке. Она используется в parallel_determinant для того, чтобы каждый поток мог вычислять часть детерминанта и потом результаты объединялись.
Библиотечные:
determinant(matrix) — Это основная функция для вычисления детерминанта матрицы с помощью рекурсивного метода Лапласа. Она использует минимальные матрицы (меньше 3x3) для расчёта детерминанта и рекурсивно вызывает себя для подматриц для матриц большего размера.
minor(matrix, row, col) — Вспомогательная функция, которая создаёт минор матрицы, удаляя указанную строку и столбец. Минор необходим для вычисления детерминанта по разложению Лапласа.
2024-12-01 21:48:26 +04:00
Для каждого размера матрицы программа выводит время выполнения обычного и параллельного алгоритмов, а также соответствующие значения детерминантов.
2024-11-12 22:48:48 +04:00
2024-12-01 21:48:26 +04:00
Результат работы программы:
2024-11-12 22:48:48 +04:00
Результаты работы программы в png картинках проекта.
2024-12-01 21:48:26 +04:00
Вывод
Параллельное выполнение нахождения детерминанта может привести к ускорению(но на больших данных, корректной настройки и оптимизации самого процесса), особенно на больших матрицах. Однако, для некоторых матриц, результаты детерминантов могут отличаться между обычным и параллельным выполнением.
2024-11-12 22:48:48 +04:00
2024-12-01 21:48:26 +04:00
ВК
2024-11-12 22:48:48 +04:00
https://vk.com/video64471408_456239209?list=ln-EEX5GM4Xv1HnCnf9P1