error de MATLAB: la función "acker" no devuelve lo mismo que la fórmula de ackermann

1

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

    
pregunta Aåkon

1 respuesta

2

La constante 0.25 en la ecuación característica debe ser multiplicada por la matriz de identidad.

    
respondido por el Suba Thomas

Lea otras preguntas en las etiquetas