# Лабораторная работа №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