# Лабораторная работа №6 - Определение детерминанта матрицы с помощью параллельных вычислений

## Разработка приложения

Для разработки был выбран язык Python. Для разработки приложения были использованы библиотки:
- Numpy - библиотека для работы с массивами
- Multiprocessing - библиотека для запуска нескольких процеесов, что позволяет паралельно запускать функции
Для поиска детерминанты будем последовательно понижать порядок матрицы, путем вывода миноров и поиска их детерминант
Суть алгоритма:
1) задаем размер матриц
2) задаем кол-во потоков
3) алгоритм ище строку или столбец с наибольшим кол-вом нулей, для того, чтобы можно было пропускать
4) теперь будет алгоритм рекурсивно делить матрицу на миноры, которые тоже в свою очередь будет делить их на миноры и искать уже их детерминанты
5) рекурсия останавливается когда в нее попадает матрица размеров 2х2, возращается детерминанта данной матрицы
6) складываем все полученные значения




## Тестирование

Тест 1. Размер матрицы 6х6
![image (1).png](images%2Fimage%20%281%29.png)
Тест 2. Размер матрицы 8х8
![image (2).png](images%2Fimage%20%282%29.png)
Тест 2. Размер матрицы 11х11
![image (3).png](images%2Fimage%20%283%29.png)



## Вывод
Паралельной алгоритм поиска детерминанты матрицы работает эффективнее, чем обычный. НО выполение больших матриц (когда размер стороны превышает 11) становится очень большим, что даже несколько потоков уже не спасает. 


## Запись тестирования
Работа приложения представлена в [видео](https://disk.yandex.ru/i/kkNVNzvOaOmCOQ)