DAS_2024_1/kurushina_ksenia_lab_6/README.md
2024-12-09 20:01:43 +04:00

3.6 KiB
Raw Blame History

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

Задание

Необходимо разработать два алгоритма для вычисления детерминанта квадратной матрицы:

  1. Обычный алгоритм — выполняется последовательно.
  2. Параллельный алгоритмс возможностью ручного задания количества потоков. Каждый поток отвечает за вычисление определённой группы множителей.

Описание работы программы

Программа предназначена для вычисления детерминанта квадратной матрицы двумя способами:

  • Обычным (последовательным) методом.
  • Параллельным, который ускоряет выполнение за счёт многопоточности.

Обычный алгоритм

  1. minor(matrix, row, col)

    • Вспомогательная функция для формирования минора матрицы. Удаляет указанную строку и столбец, подготавливая данные для рекурсивного вычисления.
  2. determinant(matrix)

    • Основная функция для вычисления детерминанта. Использует метод разложения Лапласа.
    • Для матриц 2x2 результат вычисляется напрямую.
    • Для матриц большего размера рекурсивно вызывает себя для вычисления детерминантов подматриц.

Параллельный алгоритм

  1. parallel_determinant(matrix, num_threads=4)

    • Основная функция, распределяющая вычисления детерминанта между потоками.
    • Количество потоков задаётся вручную.
  2. worker(start_row, end_row)

    • Вспомогательная функция, используемая потоками. Выполняет вычисления на заданном диапазоне строк.
    • Результаты отдельных потоков объединяются для получения итогового детерминанта.

Особенности реализации

  • Вычисления для небольших матриц выполняются быстрее обычным алгоритмом.
  • Параллельный подход показывает значительное ускорение при обработке больших матриц (при оптимальной настройке количества потоков).

Результаты работы

Для каждой матрицы программа выводит:

  • Значение детерминанта, рассчитанное обоими алгоритмами.
  • Время выполнения для каждого из методов.

Результаты тестирования представлены в виде графиков и таблиц, сохранённых в PNG-файлах проекта.


Видео

https://cloud.mail.ru/public/L7Wf/o3nkwpAGx