本文为原创,如有错误疏漏,烦请指出。如需转载,请联系笔者,ask.shenyue@http://gmail.com。
一、求系统响应就是求解一阶微分方程
线性系统:
首先问题是,为什么所有的系统都能写成一阶微分方程?因为任何一个n阶微分方程,永远都可以通过将状态扩展为
![]()
的列向量,写成n个一阶的微分方程。例如一个挂在弹簧上的质量为m的小球:
![]()
。它是一个二阶微分方程,我们可以通过令
![]()
将这个二阶微分方程,写成两个一阶微分方程:
![]()
,状态量扩展为
![]()
的列向量
![]()
。
给定线性系统的状态方程
![]()
,A为n阶方阵,B为输入矩阵,假设状态
![]()
,输入
![]()
。看系统的响应,本质上是,给定初始状态
![]()
,根据系统的一阶微分方程
![]()
,要算出任意时刻t,状态量
![]()
等于什么。高等数学中学过求解微分方程,而状态方程
![]()
只是一阶微分方程,还是线性的。在高数课程上,这是一类最容易求解的微分方程,解的形式固定:
由于输出
![]()
,将x(t)代入到输出方程,我们有
![]()
.
二、可控性的本质
可控性(controllability)的定义:
给定一个控制系统(线性或者非线性),给定初始状态
![]()
和初始时间
![]()
,假设你想要在某个你指定的时间
![]()
让状态
![]()
等于你想要的
![]()
,如果你可以通过设计u(t)来达到你的目的,那么系统就称作
状态可控;如果你不管怎么想方设法地设计u(t),都无法让x(t)在你想要的时刻
![]()
等于你想要的
![]()
,那么系统称作是
状态不可控。
我们知道状态x是n维,
![]()
,状态可控也就是希望所有n个状态都可控。但是实际问题中,我们可能只想要
![]()
可控,其他的状态你不care或者不重要。
探索可控性(controllability)本质与矩阵A的相似对角化的关系(线性系统):
线性状态方程
![]()
的解:
由可控性的定义,你想要在时刻
![]()
到达你想要的位置
![]()
,也就是
![]()
令
![]()
,有
对A矩阵进行对角化是为了把系统等价转换成相互独立的子系统:
重新回到线性状态方程
![]()
,假设存在P阵(由A的n个线性无关的特征向量组成)让A相似对角化
![]()
(详细请参考矩阵的特征值、特征向量与相似对角化),那么令
![]()
,我们有
![]()
。那么我们可以有
![]()
,变成了
n个相互独立的子系统了。
A矩阵对角化使得可控性分析一目了然:
所以对于第1个子系统,只要
![]()
的
![]()
(
![]()
矩阵的第一行)不全是0,那么就可以求解该方程的输入u使得
![]()
等于任意我想要的位置。如果第i个子系统
![]()
和第j个方程
![]()
中的
![]()
是同一个特征值,也就是
![]()
,而且恰好
![]()
也相等或者
![]()
(
![]()
是),那么
![]()
就必须等于
![]()
或者
![]()
必须等于
![]()
,也就是
![]()
不能任意选取,不符合可控性的定义,也就是系统不可控。所以如果
A矩阵可相似对角化成
(详细请参考矩阵的特征值、特征向量与相似对角化)
,可控性的条件就是对角矩阵
中相同特征值
对应的
不能线性相关。
那么问题来了,对于那些不能相似对角化而只能约当块对角化的A矩阵(详细请参考矩阵的特征值、特征向量与相似对角化),可控性的条件又是什么?
假设A有r个特征值,
![]()
维(几何重数)特征空间,
![]()
维(几何重数)特征空间,一直到最后的特征值
![]()
维(几何重数)特征空间。所有特征空间一共有
![]()
维,那么约当对角化后的
![]()
有m个约当块,
![]()
,
系统相当于m个独立的子系统。其中,
![]()
对应
![]()
个约当块,也就对应
![]()
个(几何重数)独立子系统;
![]()
对应
![]()
个(几何重数)独立子系统,以此类推。所以类似分析,
相同特征值
对应的不同约当块的最后一行都是只有
,例如
或者
,所以对应
的那一行必须线性不相关。
我们还可以得到,如果某个特征值
![]()
的eigenspace有
![]()
维,所以它就对应
![]()
个约当块,所以这
![]()
个约当块对应的B的那
![]()
行(A中的
![]()
个同一个特征值的约当块的最后一行)必须线性不相关。如果输入u的维数
![]()
,那么这对应的
![]()
行怎么也不可能线性不相关,系统不可控。所以我们说,
A矩阵的任何特征值对应的eigenspace维数(几何重数)必须小于等于输入u的维数。