状态空间表示法
1.线代基础
-
矩阵乘法
口诀:记住是横行乘以数列,行数与矩阵A的行数相同,列数与矩阵B的列数相同。
理解:矩阵A的行是线性变换空间的维数,列代表输入空间的维数。矩阵B的行数是待变换空间的维数,必须与A的列数相同(可以把A的列看成接口)。B的列数代表向量的个数。
-
矩阵特征值的计算
可以通过如下的方式求特征值:特征值λ代表的是能够用一个标量λ代替矩阵A进行矩阵乘法
在特征值的个数等于A的维数(在没有出现重复特征根的情况下)
求出一元多次方程即可。
-
\矩阵特征向量的计算
如公式2所示,\(x_i\)代表的就是特征向量。
化简之后的计算式如下
对\(A-\lambda_i I\)进行化简行列式,并代入任意值(推荐全部带1)得到的向量就是特征向量。特征空间的基就是对应解空间的基
-
行列式的计算
(略)
-
矩阵逆的计算
\[A^{-1}=\frac{1}{\operatorname{det}(A)} \operatorname{adj}(A)=\frac{1}{\operatorname{det}(A)}\left[\begin{array}{cccc} C_{11} & C_{12} & \ldots & C_{1 n} \\ C_{21} & C_{22} & \ldots & C_{2 n} \\ \vdots & \vdots & & \vdots \\ C_{n 1} & C_{n 2} & \ldots & C_{n n} \end{array}\right]^T=\frac{1}{\operatorname{det}(A)}\left[\begin{array}{cccc} C_{11} & C_{21} & \ldots & C_{n 1} \\ C_{12} & C_{22} & \ldots & C_{n 2} \\ \vdots & \vdots & & \vdots \\ C_{1 n} & C_{2 n} & \ldots & C_{n n} \end{array}\right] \]\(C_{ij}\) 代表的是代数余子式 , 注意要对代数余子式矩阵转置
2.状态空间概述:
2.1状态空间表示法是什么:
研究一个系统最开始是建模,而现控相比于古典控制建模部分出现了较大改变。而这种改变导致系统的描述更加简单,数值计算更加方便。
现代控制系统在古典控制的基础上增加了一个研究因素——状态。所以我们要把表达式抽象成这样:
第一个式子表示下一个状态和当前状态和输入的关系
同时继承控制的必须研究的内容,输出和输入和当前状态的关系
用当前状态和未来状态来表示我们的新研究因素:状态
对比于古典控制需注意:
- 一个系统的状态空间方程不唯一,但是系统的传递函数唯一
- 状态空间方程研究时域
一个状态空间方程可以表示成对应系统传递函数矩阵。
结果如下:
同时也引出,一个MIMO系统的表示用状态空间方程来建模更加简略,但是使用传递函数就更为复杂。比如一个5输入8输出的传递函数矩阵大小是8*5.
2.2状态空间表达式的形式
2.2.1基本形式
接下来介绍状态空间表达式的书写
- 找出微分方程
- 找出状态变量个数,写出状态空间方程组
- 写出ABCD矩阵
主要就是把一个高阶的微分方程变成一阶线性微分方程组,也就是把高阶微分变成用状态变量来表示。掌握这个就可以进行状态空间表示。
同时要明确每个矩阵的行数列数和各个变量数的关系。
- A矩阵的行数代表状态变量个数,列数也是.
- B矩阵的行数代表状态变量个数,列数代表输入的个数
- C矩阵行数代表输出的个数,列代表状态变量
- D行数输出,列输入
只要记住矩阵左边是需要变换的线性空间,右边是目标线性空间,行数代表维数,列数代表变量个数即可
接下来介绍一些特殊的状态空间方程形式. 之前提到过状态方程可以有很多种实现方式,学者们提出了方便控制器设计,检测器设计的状态空间矩阵设计
2.2.2 特殊的状态空间形式
控制器对偶形式:
传感器对偶形式
控制能力对偶性质
可观测性对偶性质
3.从矩阵传递函数和状态空间方程之间的关系
3.1 从状态空间方程推导传递函数
继续通过之前的表达式\(C(SI-A)^{-1}B+D\)来求解一个状态空间方程对应的传递函数矩阵。
例子如下:
\[A_c=\left[\begin{array}{rrr} -a_1 & -a_2 & -a_3 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{array}\right], b_c=\left[\begin{array}{l} 1 \\ 0 \\ 0 \end{array}\right], \text { and } c_c=\left[\begin{array}{lll} b_1 & b_2 & b_3 \end{array}\right] \]求解的过程简略,但是需要说明的一点是:
先求\((SI-A)^{-1}\),但是请注意b和C的形式,如果有任意一个出现了类似本题的\(b_c\)的多个0的形式,那么A就可以不用全部求出
,不用求的部分用X表示。
同时会发现,求出的\(|(SI-A)^{-1}|\)就是系统的传递函数矩阵对应的极点(所有传递函数矩阵中的元素极点相同)。
这个形式也代表着特征值就是传递函数的极点
3.2 通过传递函数推导状态空间方程
-
把传递函数化成这种形式:
\[G(s)=\frac{b_n s^n+...+b_2 s^2+b_1 s+b_0}{s^m+...+a_3 s^3+a_2 s^2+a_1 s+a_0} \]其中,m≥n。
注意,分母的最高次项系数必须为1
-
对应状态空间方程形式为
\[\left[\begin{array}{c} \dot{x}_1 \\ \dot{x}_2 \\ \vdots \\ \dot{x}_{n-1} \\ \dot{x}_n \end{array}\right]=\left[\begin{array}{ccccc} 0 & 1 & 0 & \cdots & 0 \\ 0 & 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \ddots \\ 0 & 0 & 0 & \cdots & 1 \\ -a_0 & -a_1 & -a_2 & \cdots & -a_{n-1} \end{array}\right]\left[\begin{array}{c} x_1 \\ x_2 \\ \vdots \\ x_{n-1} \\ x_n \end{array}\right]+\left[\begin{array}{c} \beta_{n-1} \\ \beta_{n-2} \\ \vdots \\ \beta_1 \\ \beta_0 \end{array}\right] u \]
其中,β对应公式为
4.通过控制框图写出状态空间方程
- 如何使用控制框图书写状态方程
最重要 就是状态变量
5. 系统对角化实现
5.1 通过传递函数实现对角化
5.1.1简介:
简而言之就是对n阶的传递函数进行留数法拆分,拆分成n个一阶的传递函数形式。这样就方便我们分析系统。(具体为什么方便分析我还不清楚,没有分析过)。不仅可以简化传递函数,还可以获得一个简化后版本的状态空间方程,是一种从传递函数转到状态空间方程的方法。
用传递函数控制框图表示如下
同时,也可以用状态空间的控制框图来表示
我们可以得出对应的状态空间方程。这也就从简化传递函数拓展到了对应的简化状态空间方程形式,可以看出,方程的A矩阵是对角化形式的,也就是说把状态空间方程变成对角化形式能够大大的减少分析系统的难度。当然也可以直接从解耦的角度来考虑,即每一个每一个状态的导数只与当前状态和输入有关,和其他的状态变量无关。
接下来介绍如何通过例子介绍如何通过传递函数直接实现对角化
5.1.2 实例
5.1.2.1 实例1:
主要思路:写出简化版的传递函数之后,画出控制框图,设出状态空间变量。构建状态空间变量的拉氏域表达式,之后想办法把变量转回时域,并且带着导数和原本变量,即可构建对角化的状态空间方程。
-
首先对传递函数进行留数法或者部分分式法进行拆分得到各个式子,结果如下
-
决定系数的位置(因为状态方程有很多个,所以系数的位置决定了状态方程),这里把ABC放到了黑色框的位置
-
设出状态空间变量并且构建状态空间变量的频域表达式。
\[&X_1(s)=\frac{1}{s+3} u(s) \\ \] -
把复域上的状态空间变量转换回时域,并且构造出状态空间变量的导数,从而实现状态空间方程的书写
\[&(s+3) X_1(s)=u(s) \\ \]\[\space \space sX_1(s)=-3 X_1(s) + u(s) \]\[\dot{X_1(t)}=-3 X_1(t)+u(t) \] -
同理可得所有状态空间方程组
\[\dot{x}(t)=\left[\begin{array}{ccc} -3 & 0 & 0 \\ 0 & -2 & 0 \\ 0 & 0 & -1 \end{array}\right] x(t)+\left[\begin{array}{l} 1 \\ 1 \\ 1 \end{array}\right] u(t) \\ \\ y(t)=\left[\begin{array}{ccc} A & B & C \\ \end{array}\right] x(t) \]
总结: 对角化状态空间方程的矩阵A的对角线就是该系统的极点,同时也是系统的特征值。
5.1.2.2 实例2
同时要注意程序框图的画法可能决定了状态空间方程的形式,比如说,把A,B,C放到惯性项前面,如图所示
依照实例1的步骤,可以得到状态空间方程的推到步骤及状态空间方程如下:
可以看出,与实例一相比,矩阵B和矩阵C出现了变化,但是矩阵A仍然不变。所以,状态空间方程的书写主要取决于状态空间的变量的选择。
6 系统的响应
系统的响应就是系统的输出。在现控中,响应有输出响应和状态响应,比经典控制多出了一个状态相应。
6.1 零输入响应
6.1.1 零输入响应的推导
推导系统的零输入响应。也就是状态变量的关于时间的函数。
首先列出状态变量的微分方程:
设
则我们可以根据14列出这样一个等式
同时我们可以得到这样一系列的系数等式
因为
所以x(t)可以转换成如下(通过幂级数)
所以这就是系统的一阶响应,这个\(e^{At}\)就叫系统状态转移矩阵(马尔科夫矩阵)
6.1.2状态转移矩阵的性质
- \(\phi (0)=I\)
- \(\phi(t)=[\phi(-t)]^{-1}\) or \(\phi^{-1}(t)=\phi(-t)\).
- \(\phi\left(t_1+t_2\right)=\phi\left(t_1\right) \phi\left(t_2\right)=\phi\left(t_2\right) \phi\left(t_1\right)\).
- \([\phi(t)]^n=\phi(n t)\).
- \(\phi\left(t_2-t_1\right) \phi\left(t_1-t_0\right)=\phi\left(t_2-t_0\right)\).
- \(\frac{d}{d t}\left(e^{A t}\right)=e^{A t} A=A e^{A t}\).
所有状态转移矩阵的计算规则都可以归类为e的指数的运算规律
6.2全响应:
6.2.1 全响应的推导
这个微分方程就是一阶线性非齐次微分方程。想办法把非齐次变成齐次的。也就是把x(t)整体变成一个导数。变化方式如下
之后两边同乘\(e^{-At}\)得到
可以得出状态空间变量的表达式为:
输出为
7 对角化状态空间方程
7.1 相似实现2
如果两组状态空间变量之间的关系如下
可以简化成
并且我们想用$ \hat x_1 .... \hat x_n \(替换\)x_1...x_n$,则可以对状态空间方程做出如下变化
于是我们把这个变化成新的形式
因此可以得出如下结论:
这就提供了将状态空间方程整体改变并且不改变原系统的方法。这为我们把状态矩阵变成对角阵提供了基础,即只需按照一定的规律改变状态空间变量,或者说找到合适的P,就可以把状态矩阵变成对角阵。
7.2 similarity realization相似实现的性质
- 这种实现方式转换之后传递函数矩阵不变
- 系统的特征值不变
7.3 状态矩阵对角化
如果之前的P能够让A变成对角阵,那么P叫做模态矩阵,记作M。如果A有n个不相同的特征值(也代表A有n个线性无关的特征向量),那么A的特征向量矩阵就是A的模态阵。
再用\(PAP^{-1}\)就可以得到对角矩阵形式的状态矩阵
当然,最主要的使用M来求出B和C。
但是注意,如果矩阵A有多个相同的特征值,则不能对其实现对角化,因为\(P^{-1}\)不存在。这个时候使用一个新的形式的P(不知道咋来的)
之后能通过这个P来实现jordan标准型,也算是简化了