Modelo de espacio de estados en forma canónica controlable
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
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.