Tengo un sistema de tiempo discreto
Supongamos que tengo la siguiente matriz AB de mi sistema $$ A = \ begin {bmatrix} 0 & 1 \\ 1 & 1.5 \\ \ end {bmatrix} $$
$$ B = \ begin {bmatrix} 0 \\ 1 \\ \ end {bmatrix} $$
Para diseñar un estabilizador de retroalimentación de estado, quiero una relación $$ u = Kx $$
donde K es mi ganancia de retroalimentación, u es entrada a mi sistema de tiempo discreto
Para diseñar esto, use la fórmula de ackerman conocida de la siguiente manera:
$$ K = - \ begin {bmatrix} 0 1 \ end {bmatrix} * C ^ {- 1} _ {AB} * r (A) $$
donde r (A) es mi polinomio característico que contiene el polo que quiero colocar
MATLAB calcula esto directamente usando "acker" (y "place", pero limitaremos un problema a la vez)
¡Pero sigo obteniendo dos resultados diferentes y me está volviendo loco! ¡Comprobé cada paso!
Por favor, ayúdeme a señalar el error en el siguiente código:
% Enfoque 1: fórmula sin procesar
A = [0 1; 1 1.5]
B = [0 1]'
CAB = ctrb(A,B)
K1 = -1*[0 1]*inv(ctrb(A,B))*(A^2 - A + 0.25) %I wish to place the poles at {0.5, 0.5}
% Nota (A ^ 2 - A + 0.25) = (A - 0.5) (A - 0.5), la ecuación característica que contiene los dos polos
Enfoque 2: Uso de Acker incorporado
K2 = -1*acker(A,B,[0.5,0.5])
Para mí es completamente ilógico por qué
K1 =
-1.2500 -0.7500
K2 =
-1.2500 -0.5000
¡Estoy usando (en principio) una forma idéntica de calcular el vector K! También tenga en cuenta que nunca se me ha ocurrido este error en ningún diseño anterior antes de que mi sistema comience a fallar por completo.
¿Puede alguien que conozca la teoría del control señalar exactamente cuál puede ser el problema? MATLAB también contiene errores, por lo que es algo que debe tenerse en cuenta.
Gracias