From 9c0613275b1c8fa5ddd7aed2c6f2f26f2f756753 Mon Sep 17 00:00:00 2001 From: Pavel Date: Fri, 19 Dec 2025 10:08:06 +0300 Subject: [PATCH] =?UTF-8?q?test:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA8/M1.py | 9 +++++++++ TEMA8/M2.py | 8 ++++++++ TEMA8/Mod13.py | 28 ++++++++++++++++++++++++++++ TEMA8/Mod2(3).py | 39 +++++++++++++++++++++++++++++++++++++++ TEMA8/Mod23.py | 39 +++++++++++++++++++++++++++++++++++++++ TEMA8/noise.txt | 4 ++++ TEMA8/test.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 170 insertions(+) create mode 100644 TEMA8/M1.py create mode 100644 TEMA8/M2.py create mode 100644 TEMA8/Mod13.py create mode 100644 TEMA8/Mod2(3).py create mode 100644 TEMA8/Mod23.py create mode 100644 TEMA8/noise.txt create mode 100644 TEMA8/test.md diff --git a/TEMA8/M1.py b/TEMA8/M1.py new file mode 100644 index 0000000..f856464 --- /dev/null +++ b/TEMA8/M1.py @@ -0,0 +1,9 @@ +import random +import math +def logistic_tuple(N): + + logistic = lambda X: 1.0 / (1.0 + math.exp(X)) # Анонимная функция — логистическая + random_list = [random.uniform(-20, 68) for _ in range(N)] #список из N случайных чисел в диапазоне [-20, 68] + + result_tuple = tuple(logistic(x) for x in random_list) + return result_tuple diff --git a/TEMA8/M2.py b/TEMA8/M2.py new file mode 100644 index 0000000..d6d5921 --- /dev/null +++ b/TEMA8/M2.py @@ -0,0 +1,8 @@ +from M1 import logistic_tuple +N = int(input("Введите число элементов: ")) +result = logistic_tuple(N) +print("\nРезультат:") +print(result) +if len(result) > 5: + print("\nПервые 5 значений:") + print(result[:5]) diff --git a/TEMA8/Mod13.py b/TEMA8/Mod13.py new file mode 100644 index 0000000..2f7dafb --- /dev/null +++ b/TEMA8/Mod13.py @@ -0,0 +1,28 @@ +# noise_gen.py +# Тема 8. Генератор равномерного белого шума + +import random + +def generate_uniform_noise(min_val, max_val, num_samples, filename): + """ + Генерирует последовательность равномерно распределённого белого шума. + + Аргументы: + min_val (float): нижняя граница диапазона + max_val (float): верхняя граница диапазона + num_samples (int): количество отсчётов + filename (str): имя текстового файла для записи + + Возвращает: + list: список сгенерированных чисел + """ + # Генерация списка + noise = [random.uniform(min_val, max_val) for _ in range(num_samples)] + + # Запись в файл: по 3 элемента в строке, через запятую + with open(filename, 'w', encoding='utf-8') as f: + for i in range(0, len(noise), 3): + line = noise[i:i+3] + f.write(','.join(f"{x:.6f}" for x in line) + '\n') + + return noise diff --git a/TEMA8/Mod2(3).py b/TEMA8/Mod2(3).py new file mode 100644 index 0000000..1a559b4 --- /dev/null +++ b/TEMA8/Mod2(3).py @@ -0,0 +1,39 @@ +# test_noise.py +# Тема 8. Тестирование генератора шума + +from Mod13 import generate_uniform_noise + +def main(): + print("Генерация равномерного белого шума") + + # Ввод исходных данных + try: + min_val = float(input("Введите нижнюю границу диапазона (min_val): ")) + max_val = float(input("Введите верхнюю границу диапазона (max_val): ")) + if min_val >= max_val: + print("Ошибка: min_val должно быть меньше max_val") + return + + num_samples = int(input("Введите число отсчётов (num_samples): ")) + if num_samples <= 0: + print("Ошибка: число отсчётов должно быть положительным") + return + + filename = input("Введите имя файла для записи (например, noise.txt): ").strip() + if not filename: + filename = "noise.txt" + + except ValueError: + print("Ошибка: введены некорректные данные") + return + + # Вызов функции + noise_list = generate_uniform_noise(min_val, max_val, num_samples, filename) + + # Отображение результатов + print(f"\nСгенерировано {len(noise_list)} отсчётов.") + print(f"Первые 10 значений: {[round(x, 4) for x in noise_list[:10]]}") + print(f"Результат записан в файл: {filename}") + +if __name__ == "__main__": + main() diff --git a/TEMA8/Mod23.py b/TEMA8/Mod23.py new file mode 100644 index 0000000..4e061ad --- /dev/null +++ b/TEMA8/Mod23.py @@ -0,0 +1,39 @@ +# test_noise.py +# Тема 8. Тестирование генератора шума + +from Mod1(3) import generate_uniform_noise + +def main(): + print("Генерация равномерного белого шума") + + # Ввод исходных данных + try: + min_val = float(input("Введите нижнюю границу диапазона (min_val): ")) + max_val = float(input("Введите верхнюю границу диапазона (max_val): ")) + if min_val >= max_val: + print("Ошибка: min_val должно быть меньше max_val") + return + + num_samples = int(input("Введите число отсчётов (num_samples): ")) + if num_samples <= 0: + print("Ошибка: число отсчётов должно быть положительным") + return + + filename = input("Введите имя файла для записи (например, noise.txt): ").strip() + if not filename: + filename = "noise.txt" + + except ValueError: + print("Ошибка: введены некорректные данные") + return + + # Вызов функции + noise_list = generate_uniform_noise(min_val, max_val, num_samples, filename) + + # Отображение результатов + print(f"\nСгенерировано {len(noise_list)} отсчётов.") + print(f"Первые 10 значений: {[round(x, 4) for x in noise_list[:10]]}") + print(f"Результат записан в файл: {filename}") + +if __name__ == "__main__": + main() diff --git a/TEMA8/noise.txt b/TEMA8/noise.txt new file mode 100644 index 0000000..40951c1 --- /dev/null +++ b/TEMA8/noise.txt @@ -0,0 +1,4 @@ +-2.010928,1.714263,1.137040 +1.024900,0.097800,1.820752 +-1.874113,-0.357603,-4.461175 +-0.753859 diff --git a/TEMA8/test.md b/TEMA8/test.md new file mode 100644 index 0000000..e5c3b1e --- /dev/null +++ b/TEMA8/test.md @@ -0,0 +1,43 @@ +# Индивидуальное контрольное задание по теме 8 вариант 20 + +Анисенков Павел, А-01-23 + +## Задание + +Разработайте функцию с одним аргументом – числом элементов. Функция должна включать анонимную функцию с аргументом Х, вычисляющую от заданного входного числового аргу-мента X значение логистической функции: 1/(1+exp(X)). Общая функция должна создавать список с заданным в аргументе числом случайных элементов, равномерно распределенных в диапазоне от -20 до +68. После этого она должна формировать кортеж с элементами – значе-ниями логистической функции от соответствующих элементов списка. Этот кортеж должен возвращаться, как результат функции. Проверить функцию на примере. + +## Решение +```py + +M1 +import random +import math +def logistic_tuple(N): + + logistic = lambda X: 1.0 / (1.0 + math.exp(X)) + random_list = [random.uniform(-20, 68) for _ in range(N)] + + result_tuple = tuple(logistic(x) for x in random_list) + return result_tuple + +M2 +from M1 import logistic_tuple +N = int(input("Введите число элементов: ")) +result = logistic_tuple(N) +print("\nРезультат:") +print(result) +if len(result) > 5: + print("\nПервые 5 значений:") + print(result[:5]) +``` + +Вывод: + + +```py +Введите число элементов: 5 + +Результат: +(1.7003103585087036e-25, 8.372020498532923e-12, 0.013308504481261372, 5.733447989484467e-14, 2.048829680249727e-09) + +``` \ No newline at end of file