Control systems engineering¶

예제 12.1

In [1]:
import control as ctrl
import matplotlib.pyplot as plt
import numpy as np
import sympy
import math
from sympy import Matrix
from sympy import I
In [2]:
s = sympy.Symbol('s')
num_poly = 20*(s+5)
den_poly = s*(s+1)*(s+4)
num_polynomial = sympy.expand(num_poly)
den_polynomial = sympy.expand(den_poly)
In [3]:
num_poly
Out[3]:
$\displaystyle 20 s + 100$
In [4]:
num = []
num.append(float(num_polynomial.coeff(s,1)))
num.append(float(num_polynomial.coeff(s,0)))
den = []
den.append(float(den_polynomial.coeff(s,3)))
den.append(float(den_polynomial.coeff(s,2)))
den.append(float(den_polynomial.coeff(s,1)))
den.append(float(den_polynomial.coeff(s,0)))
In [5]:
system =  ctrl.TransferFunction(num, den)
system
Out[5]:
$$\frac{20 s + 100}{s^3 + 5 s^2 + 4 s}$$
In [6]:
state_space = ctrl.tf2ss(system)
state_space
Out[6]:
$$ \left(\begin{array}{rllrllrll|rll} -5\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}&-4\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}&-0\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}&1\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}\\ 1\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}&0\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}&0\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}&0\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}\\ 0\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}&1\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}&0\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}&0\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}\\ \hline 0\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}&20\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}&100\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}&0\phantom{.}&\hspace{-1em}&\hspace{-1em}\phantom{\cdot}\\ \end{array}\right) $$
In [7]:
A = Matrix(state_space.A)
B = Matrix(state_space.B)
k1, k2, k3 = sympy.symbols('k1 k2 k3')
identity_matrix = np.identity(3)
k = Matrix([k1, k2, k3])
k = k.reshape(1, 3)
sABK = s*identity_matrix-A+B@k
sABK.det()
Out[7]:
$\displaystyle 1.0 k_{1} s^{2} + 1.0 k_{2} s + 1.0 k_{3} + 1.0 s^{3} + 5.0 s^{2} + 4.0 s$
In [8]:
poly_nomial = (s+5.1)*(s+5.4+I*7.2)*(s+5.4-I*7.2)
polynomial = sympy.expand(poly_nomial)
polynomial
Out[8]:
$\displaystyle s^{3} + 15.9 s^{2} + 136.08 s + 413.1$