Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

82 строки
2.5 KiB
Markdown

# Индивидуальное контрольное задание по теме 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
```