1 votos

Solicitud de referencia: Algoritmo de colocación de valores propios para sistemas dinámicos MIMO LTI

Sea $n,m \in \mathbb{N}$ , $n,m \geq 1$ , $X \in \mathbb{R}^{n \times 1}$ , $A\in \mathbb{R}^{n \times n}$ , $B\in \mathbb{R}^{n \times m}$ y $U \in \mathbb{R}^{m \times 1}$ . Entonces para el siguiente sistema LTI $$ \dot{X} = A\cdot X + B\cdot U$$ se sabe que existe $K \in \mathbb{R}^{n \times m}$ tal que $$\hat{A} = A - B\cdot K^T$$ tiene cualquier valor propio deseado $\iff$ $A$ no tiene ningún vector propio izquierdo ortogonal a todas las columnas de $B$ .

Mi pregunta es si hay algún algoritmo para encontrar $K$ ¿No se requiere más que este criterio de existencia y no se impone ninguna condición sobre el conjunto deseado de valores propios?

Por ejemplo, el algoritmo detrás de "lugar" (Kautsky) en Matlab, no puede asignar un valor propio con multiplicidad mayor que el rango de $B$ .

Gracias.

3voto

Kevin Puntos 11

Tu criterio de existencia planteado se reduce a que el par $(A,B)$ debe ser controlable. A saber, su segunda descripción requiere básicamente lo mismo que la Lema de Hautus .

Mi respuesta se basará en una respuesta mía a esta pregunta relacionada . Esta es mi propia aproximación al problema, así que puede que no coincida exactamente con ningún algoritmo conocido, pero debería dar una imagen razonable de los pasos necesarios para resolverlo. Aquí también hay un artículo que explica con más detalle cómo resolver el problema de una forma más sólida y numéricamente estable. Ese documento también contiene algunas referencias a otros algoritmos.

Por comodidad, definiré la ganancia de realimentación de estado completo como $K\in\mathbb{R}^{m \times n}$ (por lo que no es necesaria la transposición). Esto significa que usted está interesado en encontrar un $K$ tal que

$$ A - B\,K = \hat{A} = V\,\Lambda\,V^{-1}, \tag{1} $$

con $\Lambda,V \in \mathbb{R}^{n \times n}$ . El lado derecho de $(1)$ es la descomposición de Jordan de $\hat{A}$ tal que las columnas de $V$ contienen los vectores propios generalizados de $\hat{A}$ y $\Lambda$ es un Matriz de Jordania . Para encontrar un $K$ tales que los valores propios de $\hat{A}$ coinciden con un conjunto dado de valores propios, incluida la información sobre la multiplicidad geométrica (por lo que $\Lambda$ ), entonces también hay que resolver para $V$ al mismo tiempo. Para ello $(1)$ puede reescribirse como

$$ A\,V - B\,\Omega = V\,\Lambda, \tag{2} $$

con $\Omega = K\,V$ que también se encuentra en $\mathbb{R}^{m \times n}$ . Esta ecuación es lineal en todas las incógnitas, lo que facilitará su resolución más adelante. Una vez $(2)$ se resuelve para $V$ y $\Omega$ entonces la ganancia de retroalimentación de estado completa se puede encontrar utilizando $K = \Omega\,V^{-1}$ . Al utilizar la estructura de $\Lambda$ es posible desacoplar las dependencias de las columnas de $V$ y $\Omega$ sólo a las columnas asociadas a cada bloque Jordan de $\Lambda$ . En concreto, al principio de cada bloque de Jordan tienes que resolver

$$ A\,V_{\bullet,i} - B\,\Omega_{\bullet,i} = \Lambda_{i,i}\,V_{\bullet,i}, \tag{3} $$

con $i$ el primer índice asociado a un bloque Jordan y $X_{\bullet,i}$ denota el $i$ columna de la matriz $X$ . Para obtener una solución distinta de cero hay que añadir una restricción adicional, como por ejemplo $\|V_{\bullet,i}\| = 1$ . Cada ecuación siguiente asociada a ese bloque de Jordan es

$$ A\,V_{\bullet,i+k} - B\,\Omega_{\bullet,i+k} = V_{\bullet,i+k-1} + \Lambda_{i+k,i+k}\,V_{\bullet,i+k}, \tag{4} $$

con $k$ de uno hasta el tamaño del bloque Jordan. Se puede observar que debido a la definición de una matriz de Jordan entonces debe ser cierto que $\Lambda_{i+k,i+k} = \Lambda_{i,i}$ para todos los $k$ . Estas ecuaciones no tienen una solución cero trivial. Sin embargo, ambas $(3)$ y $(4)$ puede tener más incógnitas que ecuaciones, por lo que habría que utilizar algunas restricciones o criterios de minimización adicionales. Creo que muchos algoritmos se diferencian por la elección de distintos criterios.

Cabe señalar que el comando place de MATLAB también impone restricciones $\Lambda$ a sólo una matriz de Jordan con bloques de Jordan todos de tamaño uno (por lo tanto exactamente diagonal). Esto implica que no es posible asignar un valor propio con multiplicidad mayor que el rango de $B$ ya que todos los vectores propios deben ser linealmente independientes entre sí, de lo contrario $V^{-1}$ no existiría. Para ver por qué es así $(3)$ puede reescribirse como

$$ (A - \Lambda_{i,i}\,I) V_{\bullet,i} = B\,\Omega_{\bullet,i}. \tag{5} $$

El lado derecho de $(5)$ no es más que una combinación lineal de las columnas de $B$ por lo que el lado izquierdo también debería serlo. El número de vectores linealmente independientes que se pueden construir por el lado derecho es, por definición, igual al rango de $B$ . O bien $\Lambda_{i,i}$ no es un valor propio de $A$ en cuyo caso cualquier conjunto de linealmente independientes $V_{\bullet,i}$ debe transformarse por $A - \Lambda_{i,i}\,I$ en otro conjunto de vectores linealmente independientes y viceversa. O $\Lambda_{i,i}$ es un valor propio de $A$ en cuyo caso los vectores propios de $A$ correspondientes a ese valor propio serán soluciones para $V_{\bullet,i}$ (y $\Omega_{\bullet,i}$ en el espacio nulo de $B$ ). Sin embargo, el número de otras soluciones disminuirá en la misma cantidad debido a las propiedades del lema de Hautus. Así, cuando $A - \Lambda_{i,i}\,I$ pierde rango, entonces cualquier combinación lineal de sus columnas también pierde la capacidad de formar una columna de $B$ . Por lo tanto, la multiplicidad geométrica de un valor propio nunca puede ser mayor que el rango de $B$ . Pero esto también implica que el número de bloques de Jordan asociados al mismo valor propio nunca puede ser mayor que el rango de $B$ .

Si $\Lambda_{i,i}$ no es un valor propio de $A$ entonces una forma de reducir la disminución de la libertad sería resolver $(3)$ y $(4)$ para los vectores propios de un $\Omega$ reescribiéndolos como

$$ V_{\bullet,i} = (A - \Lambda_{i,i}\,I)^{-1} B\,\Omega_{\bullet,i}, \tag{6} $$

$$ V_{\bullet,i+k} = (A - \Lambda_{i,i}\,I)^{-1} (B\,\Omega_{\bullet,i+k} + V_{\bullet,i+k-1}). \tag{7} $$

Esto debería dar una solución siempre y cuando $\Omega_{\bullet,i}$ no se encuentra en el espacio nulo de $B$ y sus columnas asociadas a $(6)$ que utilizan el mismo valor propio son linealmente independientes.


Por ejemplo, dado el siguiente sistema

$$ A = \begin{bmatrix} 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \end{bmatrix}, \quad B = \begin{bmatrix} 0 & 0 \\ 1 & 0 \\ 0 & 0\\ 0 & 1 \end{bmatrix}. \tag{8} $$

Este sistema son básicamente dos integradores dobles desacoplados, que es controlable. Todos los valores propios deben situarse en -1. El rango de $B$ es dos, por lo que para ello hay tres opciones para los tamaños de bloque Jordan, a saber, 2 y 2, 3 y 1, o sólo 4. Para la primera opción, el $\Lambda$ viene dado por

$$ \Lambda = \begin{bmatrix} -1 & 1 & 0 & 0 \\ 0 & -1 & 0 & 0 \\ 0 & 0 & -1 & 1 \\ 0 & 0 & 0 & -1 \end{bmatrix}. $$

Al resolver todos $(6)$ y $(7)$ en realidad no importa lo que se elija para $\Omega$ . Siempre que dé un $V$ entonces la ganancia de realimentación será siempre

$$ K = \begin{bmatrix} 1 & 2 & 0 & 0 \\ 0 & 0 & 1 & 2 \end{bmatrix}. $$

Cabe señalar que, en realidad, se trata también de un regulador desacoplado. Para la segunda opción, el $\Lambda$ viene dado por

$$ \Lambda = \begin{bmatrix} -1 & 1 & 0 & 0 \\ 0 & -1 & 1 & 0 \\ 0 & 0 & -1 & 0 \\ 0 & 0 & 0 & -1 \end{bmatrix}. $$

Al resolver todos $(6)$ y $(7)$ importa lo que se elija para $\Omega$ . Escribí un programa rápido en MATLAB que, después de normalizar $V$ intenta minimizar $\|V^\top V - I\|_F$ (una medida de la ortogonalidad de los vectores propios). Aquí $\|X\|_F$ denota el Norma de Frobenius de $X$ . Esto parece tener mínimos locales, porque no siempre converge a la misma solución. Una de las soluciones da la siguiente ganancia de realimentación

$$ K = \begin{bmatrix} -0.3628 & 0.6372 & -0.6724 & -0.6724 \\ 2.7621 & 2.7621 & 2.3628 & 3.3628 \end{bmatrix}. $$

Para la tercera opción, el $\Lambda$ viene dado por

$$ \Lambda = \begin{bmatrix} -1 & 1 & 0 & 0 \\ 0 & -1 & 1 & 0 \\ 0 & 0 & -1 & 1 \\ 0 & 0 & 0 & -1 \end{bmatrix}. $$

Al resolver todos $(6)$ y $(7)$ vuelve a importar lo que se elija para $\Omega$ . Al utilizar los mismos criterios de optimización que la elección anterior para $\Lambda$ pero parece que hay múltiples mínimos locales. Una de las soluciones da una ganancia de retroalimentación muy similar a la ganancia de la primera opción

$$ K = \begin{bmatrix} 1.0001 & 2.0000 & 0.0005 & 0.0000 \\ -0.0000 & 0.0000 & 0.9999 & 2.0000 \end{bmatrix}. $$

Éste no es el mejor algoritmo, pero debería darle una indicación de cuáles serían los primeros pasos en general y qué criterios podrían utilizarse para optimizar su solución con respecto a alguna función de coste.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X