DAS_2023_1/shadaev_anton_lab_6
2023-12-23 20:07:54 +04:00
..
screenshots Add lab6 2023-12-23 19:56:19 +04:00
img_1.png Add lab6 2023-12-23 19:56:19 +04:00
img_2.png Add lab6 2023-12-23 19:56:19 +04:00
img.png Add lab6 2023-12-23 19:56:19 +04:00
main.py Add lab6 2023-12-23 19:56:19 +04:00
README.md Update 'shadaev_anton_lab_6/README.md' 2023-12-23 20:07:54 +04:00

Лабораторная работа №6

Цель:

  1. Реализовать нахождение детерминанта квадратной матрицы.

Запуск

Запускаем скрипт main.py, вывод будет консольным.

Код:

img.png

determinant_block: Эта функция принимает квадратный блок матрицы и использует функцию np.linalg.det из библиотеки NumPy для вычисления его детерминанта.

img_1.png

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

img_2.png

В блоке if __name__ == "__main__": генерируется случайная матрица указанного размера, после чего функция determinant_parallel вызывается с различным числом процессов (num_processes). Замеряется время выполнения для каждого размера матрицы и каждого количества процессов. Также проводится измерение времени выполнения для последовательного (однопоточного) вычисления детерминанта с использованием функции determinant_block.

Работа программы

Вывод:

img.png

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

Видео:

https://www.youtube.com/watch?v=f4ayPI423n0