31 lines
2.7 KiB
Markdown
31 lines
2.7 KiB
Markdown
# Лабораторная работа №6
|
||
Цель:
|
||
1. Реализовать нахождение детерминанта квадратной матрицы.
|
||
|
||
## Запуск
|
||
Запускаем скрипт `main.py`, вывод будет консольным.
|
||
|
||
## Код:
|
||
![img.png](img.png)
|
||
|
||
`determinant_block`: Эта функция принимает квадратный блок матрицы и использует функцию np.linalg.det из библиотеки NumPy для вычисления его детерминанта.
|
||
|
||
![img_1.png](img_1.png)
|
||
|
||
`determinant_parallel`: Эта функция осуществляет разбиение исходной матрицы на квадратные блоки, а затем применяет библиотеку multiprocessing для параллельного вычисления детерминантов блоков. Путем создания пула процессов, она разделяет матрицу на блоки и передает каждый блок в пул процессов для параллельного вычисления детерминанта. После этого результаты собираются и перемножаются для получения общего детерминанта матрицы.
|
||
|
||
![img_2.png](img_2.png)
|
||
|
||
В блоке `if __name__ == "__main__":` генерируется случайная матрица указанного размера, после чего функция determinant_parallel вызывается с различным числом процессов (num_processes). Замеряется время выполнения для каждого размера матрицы и каждого количества процессов. Также проводится измерение времени выполнения для последовательного (однопоточного) вычисления детерминанта с использованием функции determinant_block.
|
||
|
||
# Работа программы
|
||
|
||
Вывод:
|
||
|
||
![img.png](screenshots/img.png)
|
||
|
||
Из полученных результатов видно, что реализованный алгоритм не проявляет эффективность при использовании различного числа потоков для указанных размеров матрицы. Вероятно, это связано с процессом разбиения квадратной матрицы на более мелкие блоки во время вычислений.
|
||
|
||
Видео:
|
||
|
||
https://www.youtube.com/watch?v=f4ayPI423n0 |