# Лабораторная 6 ## Вариант 9 ## Задание Кратко: реализовать нахождение детерминанта квадратной матрицы. Подробно: в лабораторной работе требуется сделать два алгоритма: обычный и параллельный. В параллельном алгоритме предусмотреть ручное задание количества потоков, каждый из которых будет выполнять нахождение отдельной группы множителей. ## Описание Программы ### Алгоритмы: **Базовый алгоритм** Он работает, с помощью уже встроенной функции из библиотеки numpy ``` def determinant_block(matrix_block): return np.linalg.det(matrix_block) ``` **Параллельный алгоритм** ``` def determinant_parallel(matrix, num_processes): size = matrix.shape[0] step = size // num_processes pool = Pool(processes=num_processes) blocks = [] for i in range(0, size, step): blocks.append(matrix[i:i + step, i:i + step]) dets = pool.map(determinant_block, blocks) return np.product(dets) ``` ## Результат Был проведен замер времени работы алгоритмов для каждого типа матрицы: 100x100, 300x300, 500x500 с разным количеством процессов ![](img.png) Из скриншота выше видно, что для каждого типа матрицы оказалось быстрее выполнение последовательно, причем гораздо. Ссылка на видео: https://vk.com/video151119348_456239203?list=ln-GQ61rRxQRWzAoVg2SZ