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

53 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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