Controllability is an important concept in dynamical system theory. For complicated systems with many degrees of freedom and many different control parameters, controllability analysis can tell us whether a system can be controlled to arbitrary configurations from any initial configuration by applying a sequence of control actions. Roughly speaking, the analysis tells us if we have enough control inputs to make the system do what we want it to do.

This concept is best explained with a toy example. Consider a coin on a plate. The number describes whether the coin is heads up () or tails up (). In dynamical system theory, is called the *state* of the system. We can pick up the coin and turn it to the other side, which is the control parameter we may choose. We can describe the system in the same way as we do in the stability analysis and nonlinear system introduction. The *dynamics* of the system are

At time , we can decide whether to turn the coin over or not. Not turning the coin at time means we choose the control action to be . This implies that , and the coin remains unchanged. If we choose , the coin is turned over. For example, the coin is tails up, , and we choose . We get . The coin is now heads up. In order for the math to make sense, we define that is reset to , which is the case when we turn the coin from heads to tails: and $x_k = 1$. This system is *controllable. *No matter what side of the coin is facing up, we can simply turn it to the side we wish to be facing up. We can now introduce a system that is analogous to juggling multiple balls on a single paddle. Consider two coins on a plate that we can only turn over *together*. The dynamics are

describes the state of the first coin at time and the state of the second coin. If we choose the control action , we flip both coins *together. T*he system is *uncontrollable:* If the coins start with the same side up, we cannot control them to one coin being heads up and the other tails up, no matter what sequence of control actions we apply.

Let’s assume we could also choose an additional control action: a simultaneous toss of both coins with a *random* outcome. If we apply this control, each coin may land face up or tails up with 50% probability each. Now the system is *controllable* in a *stochastic* (*random*) sense. Suppose the coins are both face up, and we want to get them to show different sides up. We simply apply the coin toss control action until the coins show different sides. This is a similar strategy to what we use to control multiple balls on the Cloverleaf Blind Juggler into a desired juggling pattern, about which you may read more here.