DAS_2024_1/morozov_vladimir_lab_6/readme.md

2.5 KiB
Raw Blame History

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

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

Для разработки был выбран язык Python. Для разработки приложения были использованы библиотки:

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

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

Тест 1. Размер матрицы 6х6 image (1).png Тест 2. Размер матрицы 8х8 image (2).png Тест 2. Размер матрицы 11х11 image (3).png

Вывод

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

Запись тестирования

Работа приложения представлена в видео