**
Flexible Multi-Layer Design
**

*Control System Professional* provides the flexibility to investigate a control problem along several avenues, with methods that lead to a quick direct answer or to a more detailed study. We illustrate this multi-layer design with an example of a controllability study. First, the controllability property can be determined directly, by using the function Controllable.

On the other hand, we may prefer to find the controllability matrix,

and determine its rank to find the dimension of the controllable subspace.

Or, we can find the controllability Gramian,

and check that it is singular.

The function ControllabilityGramian automatically selects the appropriate algorithm to solve the continuous or discrete Lyapunov equation, depending on the type of input system. At the same time, we have direct access to the Lyapunov equation solvers. We can extract the matrices **A** and **B**,

and solve the continuous Lyapunov equation, , with respect to the controllability Gramian .

The controllability of the system can be further examined by separating the controllable and uncontrollable subspaces with the Kalman controllable form.

"A" | |

"B" | |

"C" |

The controllable part of the system can be obtained using ControllableSubsystem.

The controllability property can also be studied by finding the Jordan canonical form with JordanCanonicalForm, or the minimal realization with MinimalRealization. A parallel selection of functions is provided for investigating the observability property. The realization with equal and diagonal controllability and observability Gramians, the internally balanced form, can be obtained using InternallyBalancedForm. *Control System Professional* also has the function DominantSubsystem, which eliminates the relatively weakly controllable and observable modes, thereby reducing the order of the model.