import math # Ввод параметров znach = input('k1,T,k2,Xm,A,F,N=').split(',') k1 = float(znach[0]) T = float(znach[1]) k2 = float(znach[2]) Xm = float(znach[3]) A = float(znach[4]) F = float(znach[5]) N = int(znach[6]) print(f"Параметры системы: k1={k1}, T={T}, k2={k2}, Xm={Xm}") print(f"Входной сигнал: A={A}, F={F}, N={N}") # Создание входного сигнала (синусоида) vhod = [] for i in range(N): vhod.append(A * math.sin((2 * i * math.pi) / F)) print("Входной сигнал:", vhod[:10]) # Покажем первые 10 значений # Функции компонентов системы def realdvig(xtt, kk1, TT, yti1, ytin1): """Модель реального двигателя""" yp = kk1 * xtt # усилитель yti1 = yp + yti1 # Интегратор ytin1 = (yti1 + TT * ytin1) / (TT + 1) # Инерционное звено return [yti1, ytin1] def tahogen(xtt, kk2, yti2): """Модель тахогенератора""" yp = kk2 * xtt # усилитель yti2 = yp + yti2 # интегратор return yti2 def nechus(xtt, gran): """Зона нечувствительности""" if xtt < gran and xtt > (-gran): ytt = 0 elif xtt >= gran: ytt = xtt - gran elif xtt <= (-gran): ytt = xtt + gran return ytt # Моделирование системы yi1 = 0 # состояние интегратора двигателя yin1 = 0 # состояние инерционного звена yi2 = 0 # состояние интегратора тахогенератора vyhod = [] # выход системы for xt in vhod: xt1 = xt - yi2 # отрицательная обратная связь [yi1, yin1] = realdvig(xt1, k1, T, yi1, yin1) yi2 = tahogen(yin1, k2, yi2) yt = nechus(yin1, Xm) vyhod.append(yt) print('Выход системы y=', vyhod)