在这里插入图片描述

假设有两个小车m1和m2,中间靠一根弹簧连着。如果没有弹簧以及后面的m2的话,我们凭直觉可能会觉得我们可以通过控制u来控制x 1 ,。但是有了弹簧以及m2之后,我们还能通过控制u来控制x 1  吗?也就是通过控制u来控制两辆车的速度和位置,有没有这种可能?


用数学一点的语言来说,就是一个系统的状态方程是x ˙ = A x + B u,是否存在一个u,使得t 0  时的x 0 状态在t 1  时变成x 1  状态。可控性的推导我们用一个离散型的状态来进行推导
xk+1=Axk+Buk



经过n步之后,我们把系统的状态从x 0 变成了x n ,如果我们想要U UU有解的话,则C o CoCo矩阵的秩R a n k ( C o ) = n 对于连续系统,我们可以和离散系统做类似,若想系统可控的话,则C o 矩阵必须是满秩的。

举例
假设一个系统的状态方程如下

这是一个可控的系统。它代表的物理意义就是我们上面所说的只有一个小车的情况,如果我们只对一个小车建模,不包括弹簧和第二个小车,根据牛顿第二定律,u = m x 我们令x 1 = x ,   x 2 = x ,就能得到这个状态方程了。这里还牵扯到一个问题,系统的可控性指的是点到点的可控还是轨迹的可控,我们可以看一个例子,下面这幅图横轴是位置,纵轴是速度,如果我们想让小车从A点到B点,我们是走AB这条路呢还是ACB这条路呢?

在这里插入图片描述

事实上,AB这条路是行不通的,我们不能在速度为正的时候位移却一直在往后,所以我们只能走ACB这条路,即速度先逐渐降低,然后反向,最后再把速度加上去。所以,系统的可控性指的是我们可以从一点到达另一点,却不能使系统按照我们想要的轨迹去走。

回到问题

在这里插入图片描述

我们用MATLAB来求解一下这个系统的可控性,MATLAB里面有Co = ctrb(A,B)这样一个函数,求一下Co矩阵的秩是4,也就是这个系统是可控的。也就是我们可以从一个小车上施加力,但会控制两个车的速度和位置。最后up主总结系统的可控是指理论上的可控,实际上的系统有各种的物理约束,不一定是可控的!