Я использую scipy.signal для создания передаточной функции и изучения ее реакции Bode и Step. Я использую следующую передаточную функцию:
from scipy import signal
num = [0.004436954130279193, 0.0004579078698685539, 0.0004416549670800096]
den = [1.82e-05, 0.00444141519184729, 0.0004579078698685539, 0.0004416549670800096]
tf = signal.TransferFunction(num, den)
Поля и нули этой передаточной функции вычисляются следующим образом:
poles = [-2.43931067e+02 + 0.j, -5.13675675e-02 + 0.31119672j, -5.13675675e-02 - 0.31119672j]
zeros = [-0.0516016 + 0.31125134j, -0.0516016 - 0.31125134j]
Когда я пытаюсь вычислить ответ шага, используя signal.step(tf)
, результирующая передаточная функция имеет резкий разрыв в своей производной на очень коротких временных масштабах, после чего появляется разумный ответ:
Этот разрыв появляется независимо от количества точек используется для расчета времени отклика (например, signal.step(tf, N=10000)
).
Это неотъемлемое ограничение метода signal.step()
, или есть способ улучшить его кратковременную точность? Я пробовал signal.step2()
как альтернативу, но это не дает улучшения.