# Singular

#### D.11.2.2 controlDim

Procedure from library `control.lib` (see control_lib).

Usage:
controlDim(R); R a module (R is the matrix of the system of equations to be investigated)

Return:
list

Purpose:
computes list of all the properties concerning controllability of the system (behavior), represented by the matrix R

Note:
the properties and corresponding data like controllability, flatness, dimension of the system, degree of controllability, kernel and image representations, genericity of parameters, obstructions to controllability, annihilator of torsion submodule and left inverse are investigated.
This procedure is analogous to 'control' but uses dimension calculations.
The implemented approach works for full row rank matrices only (the check is done automatically).

Example:
 ```LIB "control.lib"; //a WindTunnel example ring A = (0,a, omega, zeta, k),(D1, delta),dp; module R; R = [D1+a, -k*a*delta, 0, 0], [0, D1, -1, 0], [0, omega^2, D1+2*zeta*omega, -omega^2]; R=transpose(R); view(R); ==> D1+(a),(-a*k)*delta,0 ,0 , ==> 0 ,D1 ,-1 ,0 , ==> 0 ,(omega^2) ,D1+(2*omega*zeta),(-omega^2) view(controlDim(R)); ==> number of first nonzero Ext: ==> ==> 2 ==> ==> controllable, not reflexive, image representation: ==> ==> (a*omega^2*k)*delta , ==> (omega^2)*D1+(a*omega^2) , ==> (omega^2)*D1^2+(a*omega^2)*D1 , ==> D1^3+(a+2*omega*zeta)*D1^2+(2*a*omega*zeta+omega^2)*D1+(a*omega^2) ==> ==> dimension of the system: ==> ==> 2 ==> ==> Parameter constellations which might lead to a non-controllable system: ==> ==> a,k,omega ==> ==> ```