From 8f7466660bf264a126797c9042e3d6fa4aa0f280 Mon Sep 17 00:00:00 2001 From: mfnefd Date: Thu, 19 Dec 2024 18:05:01 +0400 Subject: [PATCH] =?UTF-8?q?add:=206=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- balakhonov_danila_lab_6/README.md | 36 +++++++++++++++++++++++ balakhonov_danila_lab_6/program.py | 44 +++++++++++++++++++++++++++++ balakhonov_danila_lab_6/result.png | Bin 0 -> 39290 bytes 3 files changed, 80 insertions(+) create mode 100644 balakhonov_danila_lab_6/README.md create mode 100644 balakhonov_danila_lab_6/program.py create mode 100644 balakhonov_danila_lab_6/result.png diff --git a/balakhonov_danila_lab_6/README.md b/balakhonov_danila_lab_6/README.md new file mode 100644 index 0000000..95f96ee --- /dev/null +++ b/balakhonov_danila_lab_6/README.md @@ -0,0 +1,36 @@ +# Лабораторная работа номер 6 + +> Здравствуйте меня зовут Балахонов Данила группа ПИбд-42 +> +> *— Балахонов Данила ПИбд-42* + +Видео лабораторной работы номер 6 доступно по этой [ссылке](https://drive.google.com/file/d/1GUJP05PU88XX0UQ3SnzyrcvMiUZ5LN1j/view?usp=sharing). + +## Как запустить лабораторную работу номер 6? +### Необходимые компоненты для запуска лабораторной работы номер 6 +> Здесь рассказана установка необходимых компонентов для запуска лабораторной работы номер 6 под дистрибутив GNU/Linux **Ubuntu**. + +Для запуска лабораторной работы номер 6 необходимы такие компоненты: + - Python 3 + +Чтобы установить Python 3, введите такую команду: +``` bash +sudo apt update +sudo apt install python3 +``` +После этого будет установлена последняя версия Python. +### Запуск лабораторной работы номер 6 +Для запуска лабораторной работы номер 6 необходимо **склонировать** репозиторий в любую папку и **перейти на ветку** balakhonov_danila_lab_6. +Далее в папке с `program.py` нужно вызвать такую команду: +``` bash +python3 program.py +``` +Таким образом будет запущена программа по подсчету определителя матрицы. +## Какие технологии были использованы? +Для выполнения лабораторной работы номер 6 были использованы такие технологии, как: + - Python +## Что делает лабораторная работа номер 6? +Суть лабораторной работы номер 6 заключается в разработке приложения по параллельному подсчету определителя квадратной матрицы большого размера. +## Выводы лабораторной работы номер 6 +Пример выполнения программы на матрицах 100x100, 300x300, 500x500 можно увидеть на рисунке ниже. +![Результат выполнения программы](result.png) \ No newline at end of file diff --git a/balakhonov_danila_lab_6/program.py b/balakhonov_danila_lab_6/program.py new file mode 100644 index 0000000..13dab9c --- /dev/null +++ b/balakhonov_danila_lab_6/program.py @@ -0,0 +1,44 @@ +import random as rnd +import time +import concurrent.futures +def gen_square_matrix(size): + return [[rnd.randint(1, 100) for _ in range(size)] for _ in range(size)] +# Параллельное вычисление определителя +def parallel_det(matrix, num_threads): + n = len(matrix) + # Определитель + det_value = 1 + def process_row(i, j): + factor = matrix[j][i] / matrix[i][i] + for k in range(i, n): + matrix[j][k] -= factor * matrix[i][k] + for i in range(n): + if matrix[i][i] == 0: + for j in range(i + 1, n): + if matrix[j][i] != 0: + matrix[i], matrix[j] = matrix[j], matrix[i] + det_value *= -1 + break + else: + return 0 + # Параллельное вычисление + with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as executor: + futures = [ + executor.submit(process_row, i, j) for j in range(i + 1, n) + ] + concurrent.futures.wait(futures) + # Обновление определителя + det_value *= matrix[i][i] + return det_value + +if __name__ == "__main__": + sizes = [100, 300, 500] + num_threads = [1, 5, 8] + for size in sizes: + matrix = gen_square_matrix(size) + for threads in num_threads: + start_time = time.time() + parallel_det(matrix, threads) + end_time = time.time() + print(f"Параллельное вычисление определителя.\tРазмер: {size}, {threads} потоков\t|\t {end_time - start_time}") + print("=" * 100) \ No newline at end of file diff --git a/balakhonov_danila_lab_6/result.png b/balakhonov_danila_lab_6/result.png new file mode 100644 index 0000000000000000000000000000000000000000..6ea7b7e6f81ee9428daeaf88bc0daa06e24d34e6 GIT binary patch literal 39290 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 I``q#W0CR&8VE_OC literal 0 HcmV?d00001