25 lines
2.5 KiB
Markdown
25 lines
2.5 KiB
Markdown
|
## Лабораторная работа 6. Вариант 5.
|
|||
|
### Задание
|
|||
|
Реализовать нахождение детерминанта квадратной матрицы.
|
|||
|
|
|||
|
### Как запустить
|
|||
|
В терминале ввести команду `python main.py` из директории с файлом.
|
|||
|
|
|||
|
### Описание работы
|
|||
|
+ `determinant_block`: Эта функция принимает квадратный блок матрицы и вычисляет его детерминант с использованием
|
|||
|
функции `np.linalg.det` из библиотеки **NumPy**.
|
|||
|
+ `determinant_parallel`: Эта функция разбивает исходную матрицу на квадратные блоки, а затем
|
|||
|
использует библиотеку `multiprocessing` для распараллеливания вычислений детерминантов блоков. Она создает пул
|
|||
|
процессов, разбивает матрицу на блоки и передает каждый блок в пул процессов для параллельного вычисления детерминанта.
|
|||
|
Затем результаты собираются и перемножаются для получения общего детерминанта матрицы.
|
|||
|
+ В блоке `if __name__ == "__main__"`: создается случайная матрица заданного размера, и затем функция `determinant_parallel`
|
|||
|
вызывается с разным числом процессов `num_processes`. Замеряется время выполнения для каждого размера матрицы и
|
|||
|
каждого числа процессов. Также измеряется время выполнения для последовательного (однопоточного) расчета детерминанта
|
|||
|
с использованием `determinant_block`.
|
|||
|
|
|||
|
### Результат работы
|
|||
|
![](res.png "")
|
|||
|
|
|||
|
### Вывод
|
|||
|
Из результатов работы видно, что написанный алгоритм не эффективен на приведенных размерах матрицы при различном
|
|||
|
количестве потоков. Вероятнее всего на это влияет процесс разделение квадратной матрицы на меньшие блоки для вычисления.
|