Modelo de espacio de estados en forma canónica controlable

Sep 12 2020

Mathematica, por defecto, coloca las realizaciones del modelo de espacio de estado en una forma complementaria controlable, como se ve aquí:

tfsys = TransferFunctionModel[(b1 s^2 + b2 s + b3)/(s^3 + a1 s^2 + 
      a2 s + a3 ), s];
StateSpaceModel[tfsys]

Que genera una matriz de bloques como: $$ \begin{bmatrix}0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ -a_3 & -a_2 & -a_1 & 1 \\ b_3 & b_2 & b_1 & 0\end{bmatrix} $$Sin embargo, lo quiero en forma canónica controlable , que debería verse así:$$ \begin{bmatrix}-a_1 & -a_2 & -a_3 & 1 \\ 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ b_1 & b_2 & b_3 & 0\end{bmatrix} $$ StateSpaceModelofrece la StateSpaceRealizationopción pero solo tiene ControllableCompaniony ObservableCompanion, ninguno de los cuales es lo que quiero. ¿Existe una forma sencilla de obtener la forma de espacio de estado correcta?

Respuestas

1 SubaThomas Sep 13 2020 at 05:41
StateSpaceModel[TransferFunctionModel[(b1 s^2 + b2 s + b3)/(s^3 + a1 s^2 + a2 s + a3), s]]

Y podemos obtener el formulario que desee seleccionando los estados en el orden deseado.

SystemsModelExtract[%, All, All, Reverse@Range@3]

No parece haber consenso sobre cuál de las anteriores es la "forma canónica controlable" correcta. Aquí hay algunas fuentes ( enlace , enlace ) que llaman a lo que Mathematica devuelve como la forma canónica controlable.