伴随形式包含对应特征多项式的系数,沿着其最远行或列之一。例如,一个伴随形式矩阵是
![{\displaystyle {\begin{bmatrix}0&0&0&\cdots &0&-a_{0}\\1&0&0&\cdots &0&-a_{1}\\0&1&0&\cdots &0&-a_{2}\\0&0&1&\cdots &0&-a_{3}\\\vdots &\vdots &\vdots &\ddots &\vdots &\vdots \\0&0&0&\cdots &1&-a_{n-1}\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/df5f538e8fb751a83a479c1dbcf5089c1211ac50)
另一个是
![{\displaystyle {\begin{bmatrix}-a_{n-1}&-a_{n-2}&-a_{n-3}&\cdots &-a_{1}&-a_{0}\\1&0&0&\cdots &0&0\\0&1&0&\cdots &0&0\\0&0&1&\cdots &0&0\\\vdots &\vdots &\vdots &\ddots &\vdots &\vdots \\0&0&0&\cdots &1&0\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/792a14930fced7fa8f6277f9cc67ba11315f2eff)
两种伴随形式在控制理论中方便使用,即可观测典范形式和可控典范形式。这两种形式大致互为转置(就像可观测性和可控性是对偶的概念一样)。当置于其中一种形式时,控制器或观测器的设计将简化,因为系统的结构变得清晰(并且可以轻松地根据所需的控制进行修改)。
可观测典范形式在几种情况下非常有用,特别是在设计观测器时。
可观测典范形式如下
![{\displaystyle A={\begin{bmatrix}-a_{1}&1&0&\cdots &0\\-a_{2}&0&1&\cdots &0\\\vdots &\vdots &\vdots &\ddots &\vdots \\-a_{n-1}&0&0&\cdots &1\\-a_{n}&0&0&\cdots &0\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1b980b316f31f544a5e0169a8d3ce90fc64b627c)
![{\displaystyle B={\begin{bmatrix}b_{1}\\b_{2}\\\vdots \\b_{n}\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/cacd22e693f0b8cca3580b2895ad621a19823a03)
![{\displaystyle C={\begin{bmatrix}1&0&\cdots &0\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5158f072a679aaa2b1e225656dffbff7f11ce9f2)
可控典范形式在许多情况下非常有用,尤其是在系统状态完全已知的情况下设计控制器时。
可控典范形式如下
![{\displaystyle A={\begin{bmatrix}-a_{1}&-a_{2}&-a_{3}&\cdots &-a_{n-1}&-a_{n}\\1&0&0&\cdots &0&0\\0&1&0&\cdots &0&0\\0&0&1&\cdots &0&0\\\vdots &\vdots &\vdots &\ddots &\vdots &\vdots \\0&0&0&\cdots &1&0\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b9e02406d94f2aa2df86c8471765c1d7aedc984b)
![{\displaystyle B={\begin{bmatrix}1\\0\\\vdots \\0\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/37acdc8a377e387f4e1bab1c64f2f42f94de5b10)
![{\displaystyle C={\begin{bmatrix}b_{1}&b_{2}&b_{3}&\cdots &b_{n}\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0181fc135a9f26bd9eec07cfbc71b7c261d85146)
![{\displaystyle D={\begin{bmatrix}b_{0}\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bbf6af75631c0bdbc1ad07e59575728af2ce97e2)
如果我们有两个空间,空间 *v* 是系统的原始空间(*A*、*B*、*C* 和 *D*),那么我们可以使用变换矩阵 *Tw* 将系统变换为 *w* 空间,该空间处于可控规范形式(*Aw*、*Bw*、*Cw* 和 *Dw*)。我们将此变换矩阵定义为
![{\displaystyle T=\zeta _{v}\zeta _{w}^{-1}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6895ecb56b2c524df73bfc3fd76e0c50da0d5fce)
其中 ζ 是可控性矩阵。
注意,我们事先知道 *Aw* 和 *Bw*,因为我们知道矩阵的形式和方程的系数(例如,具有常数系数的线性 ODE 或传递函数)。
如果我们知道这两个矩阵,我们就可以形成 ζw。然后我们可以使用此矩阵来创建我们的变换矩阵。
我们将在讨论状态反馈和闭环系统时讨论可控规范形式。
**相位变量形式**是通过简单地将相位变量重新编号,使其与可控规范形式相反的顺序而获得的。因此
![{\displaystyle A_{c}={\begin{bmatrix}0&1&\cdots &0&0&0\\\vdots &\vdots &\ddots &\vdots &\vdots &\vdots \\0&0&\cdots &1&0&0\\0&0&\cdots &0&1&0\\0&0&\cdots &0&0&1\\-a_{n}&-a_{n-1}&-a_{n-2}&\cdots &-a_{2}&-a_{1}\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/601a73cf9c677a8e282dafd297be7841ce08b8a5)
![{\displaystyle B_{c}={\begin{bmatrix}0\\0\\\vdots \\1\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/025d6b18a56012c07cda24c1d11c64250dfecf33)
![{\displaystyle C_{c}={\begin{bmatrix}b_{n}&b_{n-1}&\cdots &b_{2}&b_{1}\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/35069fe706803156721095698c59adde29bfbda0)
![{\displaystyle D_{c}={\begin{bmatrix}b_{0}\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/56a1b49388929ae17db488b15f5934e983d2ca39)
在此形式中,状态矩阵是对角矩阵,其对角线元素为系统的(非重复)特征值。控制对每个特征空间具有单位影响,输出是特征空间贡献的线性组合(权重为每个极点的复数残差)。
![{\displaystyle A_{m}={\begin{bmatrix}-p_{1}&0&0&\cdots &0&0\\0&-p_{2}&0&\cdots &0&0\\0&0&-p_{3}&\cdots &0&0\\\vdots &\vdots &\vdots &\ddots &\vdots &\vdots \\0&0&0&\cdots &0&-p_{n}\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0b08a7bfab8c00235ac51f96204cc0ae10fb84c1)
![{\displaystyle B_{m}={\begin{bmatrix}1\\1\\\vdots \\1\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/69f22a6a6058ad3651e24e57774196ed031938af)
![{\displaystyle C_{m}={\begin{bmatrix}c_{1}&c_{2}&\cdots &c_{n}\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6dccda35bff4f60cb95de87c03db9832d06dab4b)
![{\displaystyle D_{m}={\begin{bmatrix}D_{c}\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ba891b2cf0e5cd8b80365dcceb211d5635a1bd3b)
这种“近似对角”形式处理特征值重复的情况。重复的特征值代表一个多维特征空间,因此控制只进入特征空间一次,并通过该小子系统的其他状态进行积分。
![{\displaystyle A={\begin{bmatrix}-p_{1}&1&0&0&0&\cdots &0&0\\0&-p_{1}&1&0&0&\cdots &0&0\\0&0&-p_{1}&0&0&\cdots &0&0\\0&0&0&-p_{4}&0&\cdots &0&0\\\vdots &\vdots &\vdots &\vdots &\vdots &\ddots &\vdots &\vdots \\0&0&0&0&0&\cdots &0&-p_{n}\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/cfe2b18dc24642b9944c9f38d77796763e296db8)
![{\displaystyle B={\begin{bmatrix}0\\0\\1\\1\\\vdots \\1\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f3434a61efb1bec6c7bc9ca6b6665516b48b178c)
![{\displaystyle C={\begin{bmatrix}c_{1}&c_{2}&\cdots &c_{n}\end{bmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4b8c4124a474c730d84e50c66afeee508e0a4f49)
此操作可以使用以下
MATLAB 命令执行
tf2ss
MATLAB 可以使用 tf2ss 命令将传递函数转换为控制规范形式。
tf2ss(num, den);
% num and den on the form: [x_0*s^n, x_1*s^n-1,..., x_n*s^n-n].
此操作可以使用以下
MATLAB 命令执行
canon
MATLAB 包含一个函数,用于自动将状态空间方程转换为伴随
(例如,可控或可观测规范形式)形式。
[Ap, Bp, Cp, Dp, P] = canon(A, B, C, D, 'companion');
此操作可以使用以下
MATLAB 命令执行
compan
从一种伴随形式转换到另一种伴随形式通常涉及矩阵和向量上的基本运算(例如,转置或互换行)。给定一个包含特征多项式系数的向量,MATLAB 可以计算一个伴随形式,其系数位于顶行(还有其他 3 种可能的伴随形式不是由该函数生成的)。
compan(P)
给定另一个包含传递函数的分子多项式系数的向量,canon命令可以执行相同操作。
[Ap, Bp, Cp, Dp, P] = canon(tf(Pnum,Pden), 'companion');
同一个命令可以用于将状态空间方程转换为模态(例如,对角线)形式。
[Ap, Bp, Cp, Dp, P] = canon(A, B, C, D, 'modal');
此操作可以使用以下
MATLAB 命令执行
jordan
但是,MATLAB 还包含一个命令来计算矩阵的 Jordan 形式,这是一种适用于具有重复特征值的矩阵的修改后的模态形式。
jordan(A);
我们给出一个由传递函数描述的系统
![{\displaystyle {\frac {Y(s)}{U(s)}}={\frac {s^{2}+6s+8}{s^{3}+9s^{2}+23s+15}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/79edeeb605ec5c873e99da777782a9cb96f7aa0c)
现在我们的任务是在控制规范形式中获得状态空间矩阵。我们首先注意到,分子的阶数为 2,而分母的对应阶数为 3。这意味着我们将不会有任何前馈,因此,标量 D 为 0。
我们现在将传递函数拆分为两个因子
![{\displaystyle {\frac {Y(s)}{x_{1}(s)}}\times {\frac {x_{1}(s)}{U(s)}}={\frac {s^{2}+6s+8}{1}}\times {\frac {1}{s^{3}+9s^{2}+23s+15}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1df79b2cf908cedee61450f55772e9a348843cdd)
然后我们检索时域描述,
![{\displaystyle Y(s)=(s^{2}+6s+8)x_{1}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/fb61c429e1ebb508b35021cd805bc49eec896a96)
![{\displaystyle Y(s)=s^{2}x_{1}+6sx_{1}+8x_{1}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2cb8b9c5e468b4634b8ea67d0fb6bbdca990348c)
![{\displaystyle y(t)={\ddot {x_{1}}}+6{\dot {x_{1}}}+8x_{1}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b47c857dc3f66660ffe19cbc222dde629662e7840)
我们现在创建两个新的状态来描述所有这些导数。由于系统的最高阶为 3(在 TF 的分母中),我们必须创建 2 个新状态,以便总共有 3 个状态。
![{\displaystyle {\dot {x_{1}}}=x_{2},{\dot {x_{2}}}=x_{3}={\ddot {x_{1}}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3da2968f68fef75f3ecdb733230ee955524eec72)
我们将新状态代入上面的等式
![{\displaystyle y(t)=x_{3}+6x_{2}+8x_{1}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0755306999117ec612a3a93a8f57e8c931ace62f)
现在我们以类似的方式评估系统的输入
![{\displaystyle U(s)=(s^{3}+9s^{2}+23s+15)x_{1}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5541bf125b1e2d8c25793c8a1a56e57fa58d5f33)
![{\displaystyle U(s)=s^{3}x_{1}+9s^{2}x_{1}+23sx_{1}+15x_{1}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/60ac627ab8656baa6ebce4d26d237ce9d8c92ab7)
![{\displaystyle u(t)=x_{1}^{(3)}+9{\ddot {x_{1}}}+23{\dot {x_{1}}}+15x_{1}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e9edc447e1d29d0746aea26be11e4515901da694)
注意第一个项是三阶导数。现在我们可以将新的状态代入上面的方程
![{\displaystyle u(t)={\dot {x_{3}}}+9x_{3}+23x_{2}+15x_{1}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5e596d7c585a49f01edc6934947ef5952c1c31ad)
我们将第三个状态的导数移到等式左侧,得到
![{\displaystyle {\dot {x_{3}}}=-15x_{1}-23x_{2}-9x_{3}+u.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7281a07110997da00656dcffa1dd9822cdb16eec)
现在我们准备将这些方程改写成状态空间形式。我们首先将输入移到等式右侧,以便对每个状态都有一个表达式。