Un sistema de orden $4$ se puede escribir en su forma controlador de la siguiente manera:

$$
\frac{d}{dt} x_c =
\begin{pmatrix}
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1 \\
-a_4 & -a_3 & -a_2 & -a_1
\end{pmatrix} x_c +
\begin{pmatrix}
0 \\
0 \\
0 \\
1
\end{pmatrix} u
$$



```
from sympy import init_printing
init_printing()
```


```
from sympy import Matrix, var, eye, collect, expand
```


```
var("s, a1, a2, a3, a4, p1, p2, p3, p4")
```


```
Ac = Matrix([[0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1], [-a4, -a3, -a2, -a1]])
bc = Matrix([[0],[0],[0],[1]])
```


```
Ac
```


```
(s*eye(4) - Ac).det()
```

Este es el polinomio caracteristico del sistema:

$$
\det{(sI - A_c)} = s^4 + a_1 s^3 + a_2 s^2 + a_3 s + a_4
$$

Tambien podemos definir una retroalimentación de estado:

$$
u = f_c x_c + v
$$

en donde

$$
f_c =
\begin{pmatrix}
a_4 - \bar{a}_4 & a_3 - \bar{a}_3 & a_2 - \bar{a}_2 & a_1 - \bar{a}_1
\end{pmatrix}
$$

La ecuación de estado del sistema retroalimentada quedaría:

$$
\frac{d}{dt} x_c = A_{f_c} x_c + b_c v
$$

donde $A_{f_c} = A_c + b_c f_c$


```
fc = Matrix([[a4-p4, a3-p3, a2-p2, a1-p1]])
```


```
Afc = Ac + bc*fc
```


```
Afc
```

y su polinomio caracteristico es:


```
(s*eye(4) - Afc).det()
```

La matriz de controlabilidad del par $(A_c, b_c)$ es:


```
CAcbc = ((bc.row_join(Ac*bc)).row_join(Ac*Ac*bc)).row_join(Ac*Ac*Ac*bc)
```


```
CAcbc
```

y su determinante es:


```
CAcbc.det()
```

Si ahora analizamos la matriz de controlabilidad del sistema retroalimentado:




```
CAfcbc = ((bc.row_join(Afc*bc)).row_join(Afc*Afc*bc)).row_join(Afc*Afc*Afc*bc)
```


```
CAfcbc
```

Pero en general, podemos demostrar que la matriz de un sistema retroalimentado nos es mas que:

$$
C_{(A_f, b)} =
\begin{pmatrix}
b & A_f b & \dots & A_f^{n-1} b
\end{pmatrix} =
\begin{pmatrix}
b & \left( A + b f^T \right) b & \dots & \left( A + b f^T \right)^{n-1} b
\end{pmatrix}
$$

en donde los terminos van siendo:


```
var("A, b, f")
```


```
b
```


```
expand((A + b*f)*b)
```


```
expand((A + b*f)**2*b)
```


```
expand((A + b*f)**3*b)
```

Lo que en general, podemos ver como:

$$
C_{(A_f, b)} =
\begin{pmatrix}
b & A b & \dots & A^{n-1} b
\end{pmatrix} X
$$

donde $X$ tiene que ser de la forma:

$$
X =
\begin{pmatrix}
1 & b f & b^2 f^2 & b^3 f^3 \\
0 & 1 & b f & b^2 f^2\\
0 & 0 & 1 & b f \\
0 & 0 & 0 & 1
\end{pmatrix}
$$


```
X = Matrix([[1, b*f, b**2*f**2 , b**3*f**3], [0, 1, b*f, b**2*f**2], [0, 0, 1, b*f], [0, 0, 0, 1]])
```


```
X
```


```
CAb = Matrix([[b, A*b, A**2*b, A**3*b]])
```


```
CAb
```


```
CAb*X
```

Y como habiamos visto anteriormente, el determinante de esta matriz, no cambiará:


```
CAfcbc.det()
```

382791fe23f6c29ee800deed84461ab90c1b70cb
ipynb
Jupyter Notebook
IPythonNotebooks/Teoria de Control I/Forma controlador.ipynb
chelizalde/DCA
34fd4d500117a9c0a75b979b8b0f121c1992b9dc
MIT
IPythonNotebooks/Teoria de Control I/Forma controlador.ipynb
chelizalde/DCA
34fd4d500117a9c0a75b979b8b0f121c1992b9dc
MIT
IPythonNotebooks/Teoria de Control I/Forma controlador.ipynb
chelizalde/DCA
34fd4d500117a9c0a75b979b8b0f121c1992b9dc
MIT
2021-03-20T12:44:13.000Z
2021-03-20T12:44:13.000Z
Qwen/Qwen-72B
1. YES
2. YES