форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
83 строки
2.5 KiB
Markdown
83 строки
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
|
|
``` |