10장 예제 풀이¶

10-1¶

In [1]:
import sympy
import control as ct
import numpy as np
from sympy import I  #imaginary parts
In [2]:
A = np.asarray([
    [0, 1, 0],
    [0, 0, 1],
    [-1, -5, -6]
])
B = np.asarray([
    [0],
    [0],
    [1]
])
In [3]:
k1, k2, k3, s= sympy.symbols('k1 k2 k3 s')
identity_matrix = np.identity(3)
k_matrix = sympy.matrices.dense.MutableDenseMatrix(1,3, [k1, k2, k3])
control_plant = s*identity_matrix-A+B@k_matrix
In [4]:
sympy.det(control_plant)
Out[4]:
$\displaystyle k_{1} + 1.0 k_{2} s + 1.0 k_{3} s^{2} + 1.0 s^{3} + 6.0 s^{2} + 5.0 s + 1$
In [5]:
ce = (s+2-4*I)*(s+2+4*I)*(s+10)
In [6]:
sympy.expand(ce)
Out[6]:
$\displaystyle s^{3} + 14 s^{2} + 60 s + 200$

k3 + 6 = 14
k2 + 5 = 60
k1 + 1 = 200

10-2¶

In [7]:
%reset -f
In [8]:
import sympy
import control as ct
import numpy as np
from sympy import I  #imaginary parts
In [9]:
A = np.asarray([
    [0, 1, 0],
    [0, 0, 1],
    [-1, -5, -6]
])
B = np.asarray([
    [0],
    [0],
    [1]
])
k1, k2, k3, s = sympy.symbols('k1 k2 k3 s')
identity_matrix = np.identity(3)
k_matrix = sympy.matrices.dense.MutableDenseMatrix(1,3, [k1, k2, k3])
In [10]:
#control + plant
# = s@Identity -A +B@K
control_plant = s*identity_matrix - A + B@k_matrix
ce_having_k = sympy.det(control_plant)
ce_having_k
Out[10]:
$\displaystyle k_{1} + 1.0 k_{2} s + 1.0 k_{3} s^{2} + 1.0 s^{3} + 6.0 s^{2} + 5.0 s + 1$
In [11]:
ce = (s+2+I*4)*(s+2-I*4)*(s+10)
ce_polynomial = sympy.expand(ce)
ce_polynomial
Out[11]:
$\displaystyle s^{3} + 14 s^{2} + 60 s + 200$

k3 + 6 = 14
k2 + 5 = 60
k1 + 1 = 200

21년 기출¶

계산기로는 못 풀거 같음..

In [12]:
%reset -f
In [13]:
import sympy
import control as ct
import numpy as np
from sympy import I  #imaginary parts
In [14]:
A = np.asarray([
    [-1, -1, -1],
    [1, 0, 0],
    [0, 1, 0]
])
B = np.asarray([
    [1],
    [0],
    [0]
])
k1, k2, k3, s = sympy.symbols('k1 k2 k3 s')
identity_matrix = np.identity(3)
k_matrix = sympy.matrices.dense.MutableDenseMatrix(1,3, [k1, k2, k3])
ce_having_k = s*identity_matrix - A + B@k_matrix
ce_having_k
Out[14]:
$\displaystyle \left[\begin{matrix}k_{1} + 1.0 s + 1 & k_{2} + 1 & k_{3} + 1\\-1 & 1.0 s & 0\\0 & -1 & 1.0 s\end{matrix}\right]$
In [15]:
sympy.det(ce_having_k)
Out[15]:
$\displaystyle 1.0 k_{1} s^{2} + 1.0 k_{2} s + k_{3} + 1.0 s^{3} + 1.0 s^{2} + 1.0 s + 1$
In [16]:
ce = (s+1)*(s+2)*(s+3)
sympy.expand(ce)
Out[16]:
$\displaystyle s^{3} + 6 s^{2} + 11 s + 6$

s^2: 1+k1 = 6
s^1: 1+k2 = 11
s^0: 1+k3 =6

k1 = 5
k2 = 10
k3 = 5