# Индивидуальное контрольное задание по теме 8 Коломейцев Дмитрий, А-02-23 ## Задание #### Вариант 5. 1. Разработайте функцию с 2 аргументами: x и В, реализующую преобразование входного сигнала x по формуле: * y = 0, если -B ≤ x ≤ B * y = x - B, если x > B * y = x + B, если x < -B 2. Создайте список со 100 значениями входного сигнала х: * случайными, * нормально распределенными числами, * с математическим ожиданием 0.5, * дисперсией 25. 3. Для элементов списка с помощью функции рассчитайте список со значениями выходного сигнала y при В = 4.5. 4. Записать результаты в текстовый файл в виде двух столбцов: хi, yi. ## Решение Функция для линейно-кусочного преобразования transform_signal находится в модуле transformation_module.py Код представлен ниже: ```py def transform_signal(x, B): """ Кусочно-линейное преобразование: y = 0 при -B <= xi <= B y = xi - B при xi > B y = xi + B при xi < -B x - список входных значений """ y = [] for xi in x: if -B <= xi <= B: y.append(0) elif xi > B: y.append(xi - B) else: y.append(xi + B) return y ``` Код основного модуля: ```py import random import math from transform_module import transform_signal def main(): x = [random.gauss(0.5, 5) for i in range(100)] # 0.5 - мат ожидание, 5 - СКО = корень из 25 (дисперсия = 25) y = transform_signal(x, 4.5) with open('file.txt', 'w') as f: # это всё для красивого вывода f.write(f'{"xi":>12} {"yi":>12}\n') for xi, yi in zip(x, y): f.write(f'{xi:>12.6f} {yi:>12.6f}\n') # вывод в файле file.txt main() ``` Содержимое файла file.txt: ```py xi yi 3.123979 0.000000 5.591865 1.091865 7.261426 2.761426 ........ ........ 2.716099 0.000000 -1.374491 0.000000 ```