This is documentation for an obsolete product.

 7.1 Tests for Controllability and Observability A linear system is said to be completely controllable if, for all initial times and all initial states , there exists some input function (or sequence for discrete systems) that drives the state vector to any final state at some finite time . Controllability of the system is determined by matrices and . The function Controllable performs the test. Another kind of controllability may be useful from a practical perspective, namely, complete output controllability, which is defined as the ability to drive the output vector to the origin in finite time. This property involves all matrices , , , and . The test can be done using the function OutputControllable. Analogously, a linear system is said to be completely observable if, for all initial times , the state vector can be determined from the output function (or sequence) , defined over a finite time . Consequently, observability involves the matrices and . Observable performs the test. Testing controllability and observability properties. Load the application. In[1]:= It is easy to show that this system is neither controllable nor output controllable. In[2]:= Out[2]= This tests the controllability. In[3]:= Out[3]= And here is the test for output controllability. In[4]:= Out[4]= On the other hand, the system is completely observable. In[5]:= Out[5]= If for some reason the controllability and observability tests cannot be evaluated to True or False, they are returned partially unevaluated. In this sense, the tests behave more like the Mathematica built-in functions Positive, Negative, or Equal rather than the *Q functions, which always return True or False. Controllability and observability tests do not necessarily return True or False. In[6]:= Out[6]= Options specific to controllability and observability test functions. Controllability and observability can be determined by testing if the controllability or observability matrix has rank , where is the dimension of the state space, or if the controllability or observability Gramian is singular. The tests can be chosen through the options ControllabilityTest and ObservabilityTest. Both accept a pure function or a list of pure functions to be applied in turn until one gives True or False or the list is exhausted. By default, both first try to see if the controllability or observability information for the system is available (see below in this section) and then proceed with the matrix test and further with the Gramian test as needed. To disable this feature, simply select one desired method. Selecting controllability and observability tests. Controllability and observability can also be inferred from the structure of certain special-type realizations, such as the Kalman controllable or observable forms (see Section 8.2). In fact, in some cases the size of the controllable or observable subspace is computed internally when arriving at the realization of the special form. This information can be retrieved with the functions ControllableSpaceSize and ObservableSpaceSize and then used for alternative controllability and observability tests. In their turn, ControllableSpaceSize and ObservableSpaceSize take the option ReductionMethod that allows you to specify the method to use for those functions. The option operates analogously in ControllableSubsystem and ObservableSubsystem and is described in Section 8.1. The controllable and observable subspace sizes. This determines the size of the controllable subspace. In[7]:= Out[7]= As the size of the controllable subspace is less than the number of states, the system is not controllable. In[8]:= Out[8]=