编程-学习-思考

对线性系统可控性的理解

对线性系统可控性的理解

学习理论知识我觉得最重要的不是记住、证明多少定理,反正这些离我都很远。不过,去发现和思考其中的方法和思路还是一种很不错的体验的。

什么是线性系统

如果你是自动控制或者相关专业的,那么线性系统一定很熟悉。如果你不是,那也没有关系记住这个名词就行了。

简单来说线性系统首先就是一个系统,依稀记得学电路的时候那个经典的例子就是一个电路里面又电阻、电容和电感几个原件,然后用几个微分方程去描述它们之间的关系,它们之间就组成了一个系统。并且,用电流、电压、电阻等相关的物理量就是这些系统的状态。

那么,如果描述这些状态的微分方程满足线性关系,也就是满足齐次性和相加性。这就是一个线性系统,我们关注的是它们的状态和外部输入输出之间的关系。

什么是可控

我们的目的是为了控制一个线性系统,使它可以按照我们的意图去工作,产生我们预期的效果。现在很流行玩四旋翼,那么就用这个来作为例子来讨论什么是可控。

对于一个四旋翼系统来说,当然它比不是一个线性系统,实际情况要复杂的多。不过,为了理论研究进行简化还是可以的。

首先可控到底是什么意思,没错就是控制系统内部的状态,在这里也就是四旋翼的内部状态。不过其内部状态实在太多,因此我们只选择感兴趣的部分来讨论。比如,飞行的高度、前进的速度、前进的方向等等。一般的都会用向量这种数学语言来描述,这样讨论起来更加的方便、更高大上。

既然可控的内部的状态,那么用什么去控制呢。对于四旋翼来说是你手中的遥控器吗。不过这个还是不够直接,最直接的是四个旋翼的转速。可控的意思就是,如果有一个初始状态,那你可以从任何其他的状态通过一定的控制输入,也就是不断调整四个旋翼的转速,在有限事件内可以回到那个初始状态,那么我们就是这个系统就是可控的

好吧,没有数学语言的描述就是显得这么的冗长还不容易理解,或许是我理解的不够深刻、表达的不够精炼。所以,下面就开始用数学语言来表达的。

如何判断

那么对于一个系统是否可控该如何判断呢,当然你可以一个一个的去实验,如果你有时间并且不会无聊的话。还有一个方法就是用数学方法去证明。这就是数学的魅力所在,我也只能看一看去理解、感受其中的味道了。

描述一个系统

第一步当然就是用一些公式把系统描述出来了,说的高级一点就是数学建模了。也只有第一步和实际的系统有一些关系,之后就可以在这些公式上作大显身手了。

\begin{align} \begin{cases} \dot{x}=Ax+Bu \\ y=Cx \end{cases} \end{align}

对于这样一个系统,$x$ 就表示系统的状态,而 $u$ 表示系统的输入,$y$ 表示系统的输出。$A$ 表示系统矩阵,$B$ 是系统的控制矩阵,$C$ 表示系统的输出矩阵。这几个矩阵都表示系统内部特性,这里描述的是时不变系统,如果是时变系统的话,这些矩阵就会随着时间的变化而变化。

那么系统的可控性用数学语言描述如下,如果在初始状态 $x(t_0)$ ,存在一个输入 $u(t)$ ,可以在有限时间内把初始状态转换到状态 $x(0)=0$ ,那么就是可控的。

线性时不变系统的状态转移矩阵为 $e^{At}B$ ,也就是说在给定一个状态的情况下,求解另外一个状态的时候需要用到。不过,不理解也没有关系完全不影响后面的证明,因为重点在思路上给我们的启发。

如何证明定理

线性控制系统里面定理的证明方法用的最多的是反正法,对于我们来说要去证明一个定理就发蒙,不知道该如何下手。一个就是思路不太清晰,证明一个定理不代表要一步一步去推导出来,这是在完全不知道的情况下去完成的,而现在我们已经知道了定理需要完成的就是去证明它的逻辑是正确的,那么反证法确实是一个不错的选择。

那么该如何去完成呢?首先来看一看线性时不变系统可控的一个判据:

线性时不变系统可控的充分必要条件是 $e^{At}B$ 行线性无关。

如何用反正法去证明这个定理呢。第一步就是要明白什么事充分必要条件。我们暂且把 系统可控 看成是结果,而 状态转移矩阵是 先决条件。由条件能推到出结果就是充分性,而由结果推到出条件就是必要性了。

好了,这里就简单讲解一下思路,证明的过程就留给大家了。