首页 > 其他分享 >状态空间表示法

状态空间表示法

时间:2022-10-05 11:56:21浏览次数:43  
标签:状态 begin right end 矩阵 表示法 空间 array left

1.线代基础

  1. 矩阵乘法

    口诀:记住是横行乘以数列,行数与矩阵A的行数相同,列数与矩阵B的列数相同。

    理解:矩阵A的行是线性变换空间的维数,列代表输入空间的维数。矩阵B的行数是待变换空间的维数,必须与A的列数相同(可以把A的列看成接口)。B的列数代表向量的个数。

  2. 矩阵特征值的计算

    可以通过如下的方式求特征值:,特征值λ代表的是能够用一个标量λ代替矩阵A进行矩阵乘法
    $$
    |\lambda I-A|=0
    $$

    在特征值的个数等于A的维数(在没有出现重复特征根的情况下)

    求出一元多次方程即可。

  3. 矩阵特征向量的计算

    如公式2所示,$x_i$代表的就是特征向量。
    $$
    A x_i=\lambda x_i
    $$
    化简之后的计算式如下
    $$
    \left[A-\lambda_i I\right] x_i=0
    $$
    对$A-\lambda_i I$进行化简行列式,并代入任意值(推荐全部带1)得到的向量就是特征向量。特征空间的基就是对应解空间的基

  4. 行列式的计算

    (略)

  5. 矩阵逆的计算
    $$
    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状态空间表示法是什么:

研究一个系统最开始是建模,而现控相比于古典控制建模部分出现了较大改变。而这种改变导致系统的描述更加简单,数值计算更加方便。

现代控制系统在古典控制的基础上增加了一个研究因素——状态。所以我们要把表达式抽象成这样:

image-20220905144956143

第一个式子表示下一个状态和当前状态和输入的关系

同时继承控制的必须研究的内容,输出和输入和当前状态的关系

用当前状态和未来状态来表示我们的新研究因素:状态

对比于古典控制需注意:

  1. 一个系统的状态空间方程不唯一,但是系统的传递函数唯一
  2. 状态空间方程研究时域

一个状态空间方程可以表示成对应系统传递函数矩阵。

结果如下:image-20220905145419084

同时也引出,一个MIMO系统的表示用状态空间方程来建模更加简略,但是使用传递函数就更为复杂。比如一个5输入8输出的传递函数矩阵大小是8*5

2.2状态空间表达式的形式

2.2.1基本形式

image-20220905144956143

接下来介绍状态空间表达式的书写

  1. 找出微分方程
  2. 找出状态变量个数,写出状态空间方程组
  3. 写出ABCD矩阵

主要就是把一个高阶的微分方程变成一阶线性微分方程组,也就是把高阶微分变成用状态变量来表示。掌握这个就可以进行状态空间表示。

同时要明确每个矩阵的行数列数和各个变量数的关系。

  1. A矩阵的行数代表状态变量个数,列数也是
  2. B矩阵的行数代表状态变量个数,列数代表输入的个数
  3. C矩阵行数代表输出的个数,列代表状态变量
  4. D行数输出,列输入

只要记住矩阵左边是需要变换的线性空间,右边是目标线性空间,行数代表维数,列数代表变量个数即可

image-20220905160257857

接下来介绍一些特殊的状态空间方程形式. 之前提到过状态方程可以有很多种实现方式,学者们提出了方便控制器设计,检测器设计的状态空间矩阵设计

2.2.2 特殊的状态空间形式

控制器对偶形式:

image-20220905164640931

传感器对偶形式

image-20220905164656173

image-20220905164701134

控制能力对偶性质

image-20220905164725155

可观测性对偶性质

image-20220905164737608

3.从矩阵传递函数和状态空间方程之间的关系

继续通过之前的表达式$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}|$就是系统的传递函数矩阵对应的极点(所有传递函数矩阵中的元素极点相同)。

这个形式也代表着特征值就是传递函数的极点

4.通过控制框图写出状态空间方程

  1. 如何使用控制框图书写状态方程

    image-20220919152601603

    最重要 就是状态变量

5. 系统对角化实现

5.1 通过传递函数实现对角化

5.1.1简介:

简而言之就是对n阶的传递函数进行留数法拆分,拆分成n个一阶的传递函数形式。这样就方便我们分析系统。(具体为什么方便分析我还不清楚,没有分析过

用传递函数控制框图表示如下

image-20220924214355161

同时,也可以用状态空间的控制框图来表示

image-20220924214433942

我们可以得出对应的状态空间方程。这也就从简化传递函数拓展到了对应的简化状态空间方程形式,可以看出,方程的A矩阵是对角化形式的,也就是说把状态空间方程变成对角化形式能够大大的减少分析系统的难度。当然也可以直接从解耦的角度来考虑,即每一个每一个状态的导数只与当前状态和输入有关,和其他的状态变量无关。
$$
\begin{gathered}
{\left[\begin{array}{c}
\dot{x}_1(t) \
\dot{x}_2(t) \
\vdots \
\dot{x}_n(t)
\end{array}\right]=\left[\begin{array}{cccc}
\lambda_1 & 0 & & 0 \
0 & \lambda_2 & & 0 \
& & \ddots & \
0 & 0 & & \lambda_n
\end{array}\right]\left[\begin{array}{c}
x_1(t) \
x_2(t) \
\vdots \
x_n(t)
\end{array}\right]+\left[\begin{array}{c}
b_1 \
b_2 \
\vdots \
b_n
\end{array}\right] u(t)} \
y(t)=\left[\begin{array}{llll}
c_1 & c_2 & \ldots & c_n
\end{array}\right]\left[\begin{array}{c}
x_1(t) \
x_2(t) \
\vdots \
x_n(t)
\end{array}\right]
\end{gathered}
$$

接下来介绍如何通过例子介绍如何通过传递函数直接实现对角化

5.1.2 实例

5.1.2.1 实例1:

主要思路:写出简化版的传递函数之后,画出控制框图,设出状态空间变量。构建状态空间变量的拉氏域表达式,之后想办法把变量转回时域,并且带着导数和原本变量,即可构建对角化的状态空间方程。

  1. 首先对传递函数进行留数法或者部分分式法进行拆分得到各个式子,结果如下

    image-20220928194452501
  2. 决定系数的位置(因为状态方程有很多个,所以系数的位置决定了状态方程),这里把ABC放到了黑色框的位置

image-20220924235510085
  1. 设出状态空间变量并且构建状态空间变量的频域表达式。
    $$
    &X_1(s)=\frac{1}{s+3} u(s) \
    $$

  2. 把复域上的状态空间变量转换回时域,并且构造出状态空间变量的导数,从而实现状态空间方程的书写

    $$
    &(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)
    $$

  3. 同理可得所有状态空间方程组
    $$
    \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放到惯性项前面,如图所示

image-20220928201639025

依照实例1的步骤,可以得到状态空间方程的推到步骤及状态空间方程如下:
$$
\begin{aligned}
&x_1(s)=\frac{A}{s+3} u(s) \
&(s+3) x_1(s)=A u(s) \
&s x_1(s)=-3 x_1(s)+A u(s) \
&\dot{x}_1(t)=-3 x_1(t)+A u(t) \
&\dot{x}_2(t)=-2 x_2(t)+B u(t) \
&\dot{x}_3(t)=-\space x_1(t) \space + C u(t)
\end{aligned}
$$

$$
\begin{gathered}
\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}
A \
B \
C
\end{array}\right] u(t) \
y(t)=\left[\begin{array}{lll}
1 & 1 & 1
\end{array}\right] x(t)
\end{gathered}
$$

可以看出,与实例一相比,矩阵B和矩阵C出现了变化,但是矩阵A仍然不变。所以,状态空间方程的书写主要取决于状态空间的变量的选择。

6 系统的响应

系统的响应就是系统的输出。在现控中,响应有输出响应和状态响应,比经典控制多出了一个状态相应。

6.1 零输入响应

6.1.1 零输入响应的推导

推导系统的零输入响应。也就是状态变量的关于时间的函数。

首先列出状态变量的微分方程:
$$
\dot{x}(t)=Ax(t)
$$

$$
x(t) = B_0+B_1x+B_2X^2+...
$$
则我们可以根据14列出这样一个等式
$$
B_1+2 B_2 t+3 B_2 t^2+\ldots=A\left(B_0+B_1 t+B_2 t^2+\ldots\right)
$$
同时我们可以得到这样一系列的系数等式
$$
\begin{aligned}
B_1=& A B_0 \
B_2=& \frac{1}{2} A B_1=\frac{1}{2} A^2 B_0 \
B_3=& \frac{1}{3} A B_2=\frac{1}{3 \times 2} A^3 B_0 \
\vdots & \vdots \
B_k=& \frac{1}{k !} A^k B_0
\end{aligned}
$$
因为
$$
x(0)=B_0
$$
所以x(t)可以转换成如下(通过幂级数)
$$
\begin{aligned}
x(t) &=\left(I+A t+\frac{1}{2 !} A^2 t^2+\ldots+\frac{1}{k !} A^k t^k+\ldots\right) x(0) \
&=e^{A t} x(0)
\end{aligned}
$$
所以这就是系统的一阶响应,这个$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)整体变成一个导数。变化方式如下
$$
\begin{aligned}
&\dot{x}(t)=a x(t)+b u(t) \
&\dot{x}(t)-a x(t)=b u(t)
\end{aligned}
$$
之后两边同乘$e^{-At}$得到
$$
e^{-a t}[\dot{x}(t)-a x(t)]=\frac{d}{d t}\left[e^{-a t} x(t)\right]=e^{-a t} b u(t)
$$
可以得出状态空间变量的表达式为:
$$
\begin{gathered}
e^{-A t} x(t)=x(0)+\int_0^t e^{-A \tau} B u(\tau) d \tau \
x(t)=e^{A t} x(0)+e^{A t} \int_0^t e^{-A \tau} B u(\tau) d \tau
\end{gathered}
$$
输出为
$$
y(t)=Cx(t)=Ce^{A t} x(0)+Ce^{A t} \int_0^t e^{-A \tau} B u(\tau) d \tau
$$

7 对角化状态空间方程

7.1 相似实现

如果两组状态空间变量之间的关系如下
$$
\begin{aligned}
\hat{x}_1=& X_1\left(x_1, x_2, \ldots, x_n\right) \
\hat{x}_2=& X_2\left(x_1, x_2, \ldots, x_n\right) \
\vdots & \vdots \
\hat{x}_n=& X_n\left(x_1, x_2, \ldots, x_n\right)
\end{aligned}
$$
可以简化成
$$
\hat x=Px
$$
并且我们想用$ \hat x_1 .... \hat x_n $替换$x_1...x_n$,则可以对状态空间方程做出如下变化
$$
\begin{aligned}
\dot{\hat{x}} &=P \dot{x}=P A x+P b u \
&=P A P^{-1} \hat{x}+P b u \
y &=c x=c P^{-1} \hat{x}
\end{aligned}
$$
于是我们把这个变化成新的形式
$$
\begin{aligned}
&\dot{\hat{x}}=\hat{A} \hat{x}+\hat{b} u \
&y=\hat{c} \hat{x}
\end{aligned}
$$
因此可以得出如下结论:
$$
\begin{aligned}
\hat{A} &=P A P^{-1} \
\hat{b} &=P b \
\hat{c} &=c P^{-1}
\end{aligned}
$$
这就提供了将状态空间方程整体改变并且不改变原系统的方法。这为我们把状态矩阵变成对角阵提供了基础,即只需按照一定的规律改变状态空间变量,或者说找到合适的P,就可以把状态矩阵变成对角阵。

7.2 similarity realization相似实现的性质

  1. 这种实现方式转换之后传递函数矩阵不变
  2. 系统的特征值不变

7.3 状态矩阵对角化

如果之前的P能够让A变成对角阵,那么P叫做模态矩阵。如果A有n个不相同的特征值(也代表A有n个线性无关的特征向量),那么A的特征向量矩阵就是A的模态阵。

再用$PAP^{-1}$就可以得到对角矩阵形式的状态矩阵
$$
\hat{A}=P^{-1} A P=\operatorname{diag}\left{\lambda_1, \lambda_2, \ldots, \lambda_n\right}
$$
但是注意,如果矩阵A有多个相同的特征值,则不能对其实现对角化,因为$P^{-1}$不存在。这个时候使用一个新的形式的P(不知道咋来的
$$
P=\left[\begin{array}{ccccc}
1 & 0 & 0 & \ldots & 0 \
\lambda_1 & 1 & 0 & \ldots & 0 \
\lambda_1^2 & 2 \lambda_1 & 1 & \ldots & 0 \
\vdots & \vdots & \vdots & \ddots & \
\lambda_1^{n-1} & \frac{d}{d \lambda_1} \lambda_1^{n-1} & \frac{1}{2 !} \frac{d^2}{d \lambda_1^2} \lambda_1^{n-1} & \ldots & 1
\end{array}\right]
$$
之后能通过这个P来实现jordan标准型,也算是简化了
$$
\hat{A}=P^{-1} A P=\left[\begin{array}{ccccc}
\lambda_1 & 1 & 0 & & 0 \
0 & \lambda_1 & 1 & & 0 \
& & & \ddots & 1 \
0 & 0 & 0 & & \lambda_1
\end{array}\right]
$$

8.总结:

  1. 一些线代基础,比如说特征值(和极点有关),特征向量,行列式的求法,求逆等等都会用上
    1. 行列式:
      • 都按照

标签:状态,begin,right,end,矩阵,表示法,空间,array,left
From: https://www.cnblogs.com/yujiesun-818/p/16755326.html

相关文章

  • python爬虫使用session保持登录状态
    今天有个客户需求,从网站上下载会员试题,需要在登录状态下载,然后将网页中展示的试题保存在word中。网站上展示的所有试题要保存在一个word文档中,但是每一个试题结束下一个试......
  • NET第一章:引用命名空间using
    这次6.0版本更新到24年底结束。以淘汰框架:WCF,webserver,asp.netwebform,asp.netmvc,asp.netwebAPI这些都不需要研究。需要学习:asp.netcore新知识去学习,被淘汰的都......
  • 切线空间的理解(Tangent space)
    为什么需要切线空间?切线空间是为了解决法线贴图的问题。法线是垂直于面的单位向量,当在贴图中记录法线时,其坐标系有如下选择:世界坐标系:当面改变朝向改变时,贴图中的法线......
  • 分布式存储系统之Ceph集群状态获取及ceph配置文件说明
    前文我们了解了Ceph的访问接口的启用相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16727620.html;今天我们来聊一聊获取ceph集群状态和ceph配置文件说明相......
  • 开发网页状态码
    状态码,可根据以下标准按照项目扩展自身状态码:200~299段表示操作成功:200操作成功,正常返回201操作成功,已经正在处理该请求300~399段表示参数方面的异常300参数类型......
  • python中类与对象的命名空间(静态属性的陷阱)、__dict__ 和 dir() 在继承中使用说明
    1.面向对象的概念1)类是一类抽象的事物,对象是一个具体的事物;用类创建对象的过程,称为实例化。2)类就是一个模子,只知道在这个模子里有什么属性、什么方法,但是不知道......
  • HTTP常见状态码
    1、HTTP200状态码HTTP200状态码代表的意思是:请求成功,即HTTP200OK响应状态。状态详细说明:HTTP200表示http请求成功。即正常的成功访问时响应的状态码。2、HTTP......
  • Occupancy Networks:基于学习函数空间的三维重建表示方法
    概述 随着深度神经网络的到来,基于学习的三维重建方法逐渐变得流行。但是和图像不同的是,在3D中没有规范的表示,既能高效地进行计算,又能有效地存储,同时还能表示任意拓扑的高分......
  • Linux系统删除文件后空间并没有释放原因及解决方法
    Linux系统删除文件后空间并没有释放原因及解决方法今日收到监控报警,发现一台服务器的磁盘空间不足,需要进行处理,登录后发现可利用率不足1%,进行相关查看和处理工作;但是操......
  • C++的命名空间
    C++的命名空间在C++的应用中,可能会出现在不同的库中存在相同名称的函数,导致名称冲突;因此引入命名空间这一概念,用于区分不同库中相同名称的函数、类、变量等。 1、作用......