форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
33 строки
1.8 KiB
Markdown
33 строки
1.8 KiB
Markdown
# Индивидуальное контрольное задание
|
|
|
|
## Задание:
|
|
Разработайте функцию с 3 параметрами: х, yT и T, реализующую расчет по значениям последовательности значений входного сигнала х значений выходного сигнала по формуле: y= (x+T*yТ)/(T+1). Здесь х- одно текущее значение входного сигнала, yT – значение выходного сигнала в предыдущий момент времени, Т – постоянная времени инерционного звена. Создайте список с последовательностью из 100 значений входного синусоидального сигнала с амплитудой 2, периодом 7 и фазой 0.35. Рассчитайте последовательность значений выходных сигналов, принимая Т=3 и yT равным предыдущему в последовательности вычисленных значений y (для первого значения х принять yT=0). Записать результаты в текстовый файл в виде двух столбцов: хi, yi.
|
|
|
|
## Решение:
|
|
|
|
```
|
|
>>>import math
|
|
|
|
>>>def vblhod_signal(x, yT, T):
|
|
y = (x + T*yT) / (T+1)
|
|
return y
|
|
|
|
>>>T = 3
|
|
>>>N = 100
|
|
>>>A = 2
|
|
>>>P = 7
|
|
>>>F = 0.35
|
|
|
|
>>>x_vhod = [A * math.sin(2 * math.pi * i / P + F) for i in range(N)]
|
|
>>>y_vblhod = []
|
|
>>>y_pred = 0
|
|
>>>for x in x_vhod:
|
|
y = vblhod_signal(x, y_pred, T)
|
|
y_vblhod.append(y)
|
|
y_pred= y
|
|
|
|
>>>with open("results.txt", "w", encoding="utf-8") as f:
|
|
f.write("xi\t\tyi\n")
|
|
for i in range(N):
|
|
f.write(f"{x_vhod[i]:.6f}\t{y_vblhod[i]:.6f}\n")
|
|
``` |