36 lines
2.5 KiB
Markdown
36 lines
2.5 KiB
Markdown
|
# Лабораторная работа №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)
|