Негладкий шаг ответа от scipy.signal.step - PullRequest
0 голосов
/ 20 февраля 2020

Я использую 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), результирующая передаточная функция имеет резкий разрыв в своей производной на очень коротких временных масштабах, после чего появляется разумный ответ: step response of tf

Этот разрыв появляется независимо от количества точек используется для расчета времени отклика (например, signal.step(tf, N=10000)).

Это неотъемлемое ограничение метода signal.step(), или есть способ улучшить его кратковременную точность? Я пробовал signal.step2() как альтернативу, но это не дает улучшения.

...