系列文章目录
【现代控制】线性系统能观性判据
【现代控制】线性系统能控性判据
下面的所有讨论都是以线性连续定常系统为前提。
一、能观性的定义
能观性所表示的是输出 y ( t ) y(t) y(t) 反映状态矢量 x ( t ) x(t) x(t) 的能力,与控制作用没有直接关系,所以分析能观性问题时,只需从齐次状态方程和输出方程出发,即 x ˙ = A X , x ( t 0 ) = x 0 y = C x \pmb {\dot{x}}=\pmb{AX},\pmb x(t_0)=\pmb x_0 \\\pmb y=\pmb{Cx} x˙=AX,x(t0)=x0y=Cx如果对任意给定的输入 u u u ,在有限观测时间 t f > t o t_f> t_o tf>to,使得根据 [ t o , t f ] [ t_o , t_f ] [to,tf] 期间的输出 y ( t ) y(t) y(t) 能唯一地确定系统在初始时刻的状态 x 0 ( t ) x_0(t) x0(t) ,则称状态 x 0 ( t ) x_0(t) x0(t)是能观测的。若系统的每一个状态都是能观测的,则称系统是状态完全能观测的,或简称是能观的。
二、能观性判据
能观性判据同能控性判据类似,结论证明的篇幅较长先不说明。
以连续时间线性时不变系统为前提 x ˙ = A X , x ( 0 ) = x 0 y = C x \pmb {\dot{x}}=\pmb{AX},\pmb x(0)=\pmb x_0 \\\pmb y=\pmb{Cx} x˙=AX,x(0)=x0y=Cx
1.格拉姆矩阵判据
[结论] 连续时间线性时不变系统为完全能观的充分必要条件是,存在时刻
t
1
>
0
t_1>0
t1>0,使如下定义的格拉姆矩阵
W
o
[
0
,
t
1
]
:
=
∫
0
t
1
e
A
T
t
C
T
C
e
A
t
d
t
W_o[0,t_1]:=\int_{0}^{t_1}e^{A^Tt}C^TCe^{At}dt
Wo[0,t1]:=∫0t1eATtCTCeAtdt为非奇异。
该判据具有理论意义,工程上并不会使用格拉姆矩阵判据。
2.秩判据
秩判据是利用格拉姆矩阵判据所推导出来的。
[结论] 对n维连续时间线性时不变系统,构造能观性判别矩阵:
Q
o
=
[
C
C
A
.
.
.
C
A
n
−
1
]
\pmb Q_o=\begin{bmatrix}C\\CA\\...\\CA^{n-1}\end{bmatrix}
Qo=
CCA...CAn−1
那么系统完全能观的充分必要条件为
r
a
n
k
(
Q
o
)
=
r
a
n
k
(
[
C
C
A
.
.
.
C
A
n
−
1
]
)
=
n
rank(\pmb Q_o)=rank(\begin{bmatrix}C\\CA\\...\\CA^{n-1}\end{bmatrix})=n
rank(Qo)=rank(
CCA...CAn−1
)=n
3.PBH判据
[结论] 对n维连续时间线性时不变系统完全能观的充分必要条件为
r
a
n
k
[
s
I
−
A
C
]
=
n
,
rank\begin{bmatrix}s\pmb I-A\\C\end{bmatrix}=n,
rank[sI−AC]=n,或
r
a
n
k
[
λ
i
I
−
A
C
]
=
n
,
i
=
1
,
2
,
.
.
.
,
n
rank\begin{bmatrix}\lambda _i\pmb I-A\\C\end{bmatrix}=n,i=1,2,...,n
rank[λiI−AC]=n,i=1,2,...,n
其中
λ
i
\lambda _i
λi为系统特征值。
4.约当规范形判据
由于约当规范形判据的结论比较抽象,在这里结合例子来说明约旦规范形判据的用法。
使用约旦规范形判据前需要将系统矩阵化为对角矩阵或约当矩阵。
【对角标准型判据】 当系统矩阵的特征值两两互异(系统矩阵可以化为对角矩阵)时,直接观察矩阵
C
ˉ
\bar C
Cˉ中有没有全零列向量,若没有则说明系统是完全能观的。
例1 一个连续时间线性时不变系统,设其约当规范形状态方程为
[
x
˙
1
x
˙
2
x
˙
3
]
=
[
5
0
0
0
3
0
0
0
1
]
[
x
1
x
2
x
3
]
y
=
[
3
5
0
2
0
3
]
x
\begin{bmatrix} \dot{x}_1\\ \dot{x}_2 \\ \dot x_3\end{bmatrix}=\begin{bmatrix} 5&0&0\\0&3&0\\0&0&1 \end{bmatrix}\begin{bmatrix} x_1\\ x_2 \\ x_3\end{bmatrix} \\y=\begin{bmatrix} 3&5&0\\2&0&3\end{bmatrix}\pmb x
x˙1x˙2x˙3
=
500030001
x1x2x3
y=[325003]x
直接观察矩阵 C ˉ \bar C Cˉ,因为矩阵 C ˉ \bar C Cˉ不包含全零列向量,因此系统完全能观。
例2 一个连续时间线性时不变系统,设其约当规范形状态方程为 [ x ˙ 1 x ˙ 2 x ˙ 3 ] = [ 5 0 0 0 3 0 0 0 1 ] [ x 1 x 2 x 3 ] y = [ 3 5 0 2 0 0 ] x \begin{bmatrix} \dot{x}_1\\ \dot{x}_2 \\ \dot x_3\end{bmatrix}=\begin{bmatrix} 5&0&0\\0&3&0\\0&0&1 \end{bmatrix}\begin{bmatrix} x_1\\ x_2 \\ x_3\end{bmatrix} \\y=\begin{bmatrix} 3&5&0\\2&0&0\end{bmatrix}\pmb x x˙1x˙2x˙3 = 500030001 x1x2x3 y=[325000]x
同样直接观察矩阵 C ˉ \bar C Cˉ,可以看到矩阵 C ˉ \bar C Cˉ的第三列是全零列向量,因此系统不完全能观。
【一般约旦标准型判据】 当系统矩阵的特征值为重根时或不能化为对角矩阵时,这时将其化为约当规范形:
x
^
˙
=
A
^
x
^
y
=
C
^
x
^
\dot{\hat{x}}=\hat{A}\hat{x}\\y=\hat{C}\hat x
x^˙=A^x^y=C^x^其中
A
^
=
[
J
1
J
2
.
.
.
J
l
]
n
×
n
,
C
^
=
[
C
^
1
C
^
2
.
.
.
C
^
l
]
q
×
n
\hat{A}=\begin{bmatrix} J_1& & & \\ & J_2 & & \\ & &...& \\ & & &J_l\end{bmatrix}_{n\times n},\\ \hat{C}=\begin{bmatrix} \hat{C}_1& \hat{C}_2 & ...&\hat{C}_l\end{bmatrix}_{q\times n}
A^=
J1J2...Jl
n×n,C^=[C^1C^2...C^l]q×n
且
r
1
+
r
2
+
.
.
.
+
r
i
α
=
σ
i
r_1+r_2+...+r_{i\alpha}=\sigma_i
r1+r2+...+riα=σi,由
C
^
i
1
,
C
^
i
2
,
.
.
.
,
C
^
i
α
\hat C_{i1},\hat C_{i2},...,\hat C_{i\alpha}
C^i1,C^i2,...,C^iα第一列所组成的矩阵列线性无关,即
r
a
n
k
[
c
^
1
i
1
c
^
1
i
2
.
.
.
c
^
1
i
α
]
=
α
rank[\hat c_{1i1} \hat c_{1i2} ... \hat c_{1i\alpha}]=\alpha
rank[c^1i1c^1i2...c^1iα]=α
例3 一个连续时间线性时不变系统,设其约当规范形状态方程为
x
^
˙
=
[
−
2
1
0
−
2
−
2
−
2
3
1
0
3
3
]
x
^
y
=
[
0
0
5
1
0
0
1
0
4
0
1
0
0
2
1
0
0
1
1
0
8
]
\dot{\hat{x}}=\begin{bmatrix}-2&1& & \\ 0& -2& & \\ & &-2& \\ &&&-2\\&&&&3&1\\&&&&0&3\\&&&&&&3\end{bmatrix}\hat x\\y=\begin{bmatrix}0&0&5&1&0&0&1\\0&4&0&1&0&0&2\\1&0&0&1&1&0&8\end{bmatrix}
x^˙=
−201−2−2−230133
x^y=
001040500111001000128
解: 由题可得,找出特征值-2对应的矩阵
C
^
σ
1
\hat C_{\sigma 1}
C^σ1和特征值为3对应的矩阵
C
^
σ
2
\hat C_{\sigma 2}
C^σ2,如下
C
^
σ
1
=
[
0
5
1
0
0
1
1
0
1
]
,
C
^
σ
2
=
[
0
1
0
2
1
8
]
\hat C_{\sigma 1}=\begin{bmatrix}0&5&1\\0&0&1\\1&0&1 \end{bmatrix},\hat C_{\sigma 2}=\begin{bmatrix}0&1\\0&2\\1&8\end{bmatrix}
C^σ1=
001500111
,C^σ2=
001128
因为
r
a
n
k
(
C
^
σ
1
)
=
3
,
r
a
n
k
(
C
^
σ
2
)
=
2
rank(\hat C_{\sigma 1})=3,rank(\hat C_{\sigma 2})=2
rank(C^σ1)=3,rank(C^σ2)=2
C
^
σ
1
\hat C_{\sigma 1}
C^σ1和
C
^
σ
2
\hat C_{\sigma 2}
C^σ2都满秩,因此系统完全能观。
例4 一个连续时间线性时不变系统,设其约当规范形状态方程为
x
^
˙
=
[
−
2
1
0
−
2
−
2
−
2
3
1
0
3
3
]
x
^
y
=
[
0
0
5
1
0
0
1
0
4
0
0
0
0
2
0
0
0
1
0
6
8
]
\dot{\hat{x}}=\begin{bmatrix}-2&1& & \\ 0& -2& & \\ & &-2& \\ &&&-2\\&&&&3&1\\&&&&0&3\\&&&&&&3\end{bmatrix}\hat x\\y=\begin{bmatrix}0&0&5&1&0&0&1\\0&4&0&0&0&0&2\\0&0&0&1&0&6&8\end{bmatrix}
x^˙=
−201−2−2−230133
x^y=
000040500101000006128
解: 由题可得,找出特征值-2对应的矩阵
C
^
σ
1
\hat C_{\sigma 1}
C^σ1和特征值为3对应的矩阵
C
^
σ
2
\hat C_{\sigma 2}
C^σ2,如下
C
^
σ
1
=
[
0
5
1
0
0
0
0
0
1
]
,
C
^
σ
2
=
[
0
1
0
2
0
8
]
\hat C_{\sigma 1}=\begin{bmatrix}0&5&1\\0&0&0\\0&0&1 \end{bmatrix},\hat C_{\sigma 2}=\begin{bmatrix}0&1\\0&2\\0&8\end{bmatrix}
C^σ1=
000500101
,C^σ2=
000128
因为
r
a
n
k
(
C
^
σ
1
)
=
2
<
3
,
r
a
n
k
(
C
^
σ
2
)
=
1
<
2
rank(\hat C_{\sigma 1})=2<3,rank(\hat C_{\sigma 2})=1<2
rank(C^σ1)=2<3,rank(C^σ2)=1<2
C
^
σ
1
\hat C_{\sigma 1}
C^σ1和
C
^
σ
2
\hat C_{\sigma 2}
C^σ2都不满秩,因此系统不完全能观。
三、MATLAB仿真
在MATLAB中提供了求解系统能控观矩阵 Q o Q_o Qo的函数(秩判据):obsv(A,C)。对于单输入单输出系统可以直接根据det(obsv(A,C))是否为零来判断系统的能观性,或利用rank(obsv(A,C))求出能观性矩阵 Q o Q_o Qo的秩来判断系统的能观性。对于多输入多输出系统可以用det(obsv(A,C)*obsv(A,C)‘)是否为零来判断系统的能观性,或利用rank(obsv(A,C)*obsv(A,C)’)求出能观性矩阵 Q o Q_o Qo的秩来判断系统的能观性。
例1 已知线性定常系统的状态空间模型为 [ x ˙ 1 x ˙ 2 ] = [ 0 1 − 1 − 2 ] [ x 1 x 2 ] + [ 1 0 1 1 ] [ u 1 u 2 ] [ y 1 y 2 y 3 ] = [ 3 1 1 2 − 2 − 1 ] [ x 1 x 2 ] + [ 1 0 0 0 0 1 ] [ u 1 u 2 ] \begin{bmatrix} \dot{x}_1\\ \dot{x}_2 \end{bmatrix}=\begin{bmatrix} 0 & 1\\ -1 & -2 \end{bmatrix}\begin{bmatrix} x_1\\ x_2 \end{bmatrix}+\begin{bmatrix} 1 & 0\\ 1 & 1 \end{bmatrix}\begin{bmatrix} u_1\\ u_2 \end{bmatrix} \\\begin{bmatrix}y_1\\ y_2 \\ y_3 \end{bmatrix}=\begin{bmatrix} 3 & 1\\ 1 & 2 \\ -2 & -1\end{bmatrix}\begin{bmatrix} x_1\\ x_2 \end{bmatrix}+\begin{bmatrix} 1 & 0\\ 0 & 0 \\ 0 & 1\end{bmatrix}\begin{bmatrix} u_1\\ u_2 \end{bmatrix} [x˙1x˙2]=[0−11−2][x1x2]+[1101][u1u2] y1y2y3 = 31−212−1 [x1x2]+ 100001 [u1u2]求解程序如下
clear all;
A=[0 1;-1 -2];
C=[3,1;1,2;-2,-1];
n=size(C,2);
Qo=obsv(A,C)
if rank(Qo)==n %判断能观性矩阵Qo是否行满秩
fprintf('系统完全能观\n')
else fprintf('系统不完全能观\n')
end
运行结果:
Qo =
3 1
1 2
-2 -1
-1 1
-2 -3
1 0
系统完全能观
总结
利用matlab判断系统的能观性一般是利用秩判据。