Есть несколько опций, которые вы можете использовать python-control
пакет или scipy.signal
модуль или использовать harold
(бесстыдный плагин: я автор).
Вот пример
import harold
G = harold.Transfer(1, [1, 2, 1])
H_zoh = harold.discretize(G, dt=0.1, method='zoh')
H_tus = harold.discretize(G, dt=0.1, method='tustin')
H_zoh.polynomials
Out[5]:
(array([[0.00467884, 0.00437708]]),
array([[ 1. , -1.80967484, 0.81873075]]))
H_tus.polynomials
Out[6]:
(array([[0.00226757, 0.00453515, 0.00226757]]),
array([[ 1. , -1.80952381, 0.8185941 ]]))
В настоящее время поддерживаются zoh
, foh
, tustin
, forward euler
, backward euler
, включая недискретизацию.Документация находится на http://harold.readthedocs.io/en/latest/index.html