现代控制理论-5系统的可控性

本文深入探讨了系统可控性的概念,通过具体的数学推导和实例分析,解释了如何判断一个系统是否可控,以及可控性在实际应用中的意义。特别关注了通过控制输入变量,能否达到期望的系统状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
假设有两个小车m1和m2,中间靠一根弹簧连着。如果没有弹簧以及后面的m2的话,我们凭直觉可能会觉得我们可以通过控制u来控制x1, x1˙x_1, \ \dot{x_1}x1, x1˙。但是有了弹簧以及m2之后,我们还能通过控制u来控制x1, x1˙, x2, x2˙x_1, \ \dot{x_1}, \ x_2, \ \dot{x_2}x1, x1˙, x2, x2˙吗?也就是通过控制u来控制两辆车的速度和位置,有没有这种可能?

用数学一点的语言来说,就是一个系统的状态方程是x˙=Ax+Bu\dot{x} = Ax+Bux˙=Ax+Bu,是否存在一个u,使得t0t_0t0时的x0x_0x0状态在t1t_1t1时变成x1x_1x1状态。

可控性的推导

我们用一个离散型的状态来进行推导

xk+1=Axk+Bukx_{k+1} = Ax_k+Bu_kxk+1=Axk+Buk

我们令初始状态x0=0x_0=0x0=0,当

k=0, x1=Ax0+Bu0=Bu0k=0,\ x_1 = Ax_0+Bu_0 = Bu_0k=0, x1=Ax0+Bu0=Bu0

k=1, x2=Ax1+Bu1=ABu0+Bu1k=1,\ x_2 = Ax_1+Bu_1 = ABu_0+Bu_1k=1, x2=Ax1+Bu1=ABu0+Bu1

k=2, x3=Ax2+Bu2=A2Bu0+ABu1+Bu2k=2,\ x_3 = Ax_2+Bu_2 = A^2Bu_0+ABu_1+Bu_2k=2, x3=Ax2+Bu2=A2Bu0+ABu1+Bu2

.........

k=n−1, xn=Axn−1+Bun−1=An−1Bu0+...+ABun−2+Bun−1k=n-1,\ x_n = Ax_{n-1}+Bu_{n-1} = A^{n-1}Bu_0+...+ABu_{n-2}+Bu_{n-1}k=n1, xn=Axn1+Bun1=An1Bu0+...+ABun2+Bun1

如果我们用一个矩阵来表示xnx_nxn,就是下面这种形式

xn=[BAB...An−1B][un−1un−2...u0]=Co×Ux_n = [B \quad AB \quad ... \quad A^{n-1}B] \left[ \begin{matrix} u_{n-1} \\ u_{n-2} \\ ... \\ u_0 \end{matrix}\right] = Co \times Uxn=[BAB...An1B]un1un2...u0=Co×U

经过n步之后,我们把系统的状态从x0x_0x0变成了xnx_nxn,如果我们想要UUU有解的话,则CoCoCo矩阵的秩Rank(Co)=nRank(Co)=nRank(Co)=n。对于连续系统,我们可以和离散系统做类似,若想系统可控的话,则CoCoCo矩阵必须是满秩的。

举例

假设一个系统的状态方程如下

x˙=[2011]x+[11]u\dot{x} = \left[ \begin{matrix} 2 & 0 \\ 1 & 1\end{matrix}\right]x +\left[ \begin{matrix} 1 \\ 1 \end{matrix}\right]ux˙=[2101]x+[11]u

这个系统的CoCoCo矩阵如下

Co=[BAB]=[1212]Co = [B \quad AB] = \left[ \begin{matrix} 1 & 2 \\ 1 & 2\end{matrix}\right]Co=[BAB]=[1122]

这个矩阵的行列式为0,秩为1,。是一个不可控的系统。

再来看一个系统

x˙=[0100]x+[01]u\dot{x} = \left[ \begin{matrix} 0 & 1 \\ 0 & 0\end{matrix}\right]x +\left[ \begin{matrix} 0 \\ 1 \end{matrix}\right]ux˙=[0010]x+[01]u

Co=[BAB]=[0110]Co = [B \quad AB] = \left[ \begin{matrix} 0 & 1 \\ 1 & 0\end{matrix}\right]Co=[BAB]=[0110]

这是一个可控的系统。它代表的物理意义就是我们上面所说的只有一个小车的情况,如果我们只对一个小车建模,不包括弹簧和第二个小车,根据牛顿第二定律,u=mx¨u = m\ddot{x}u=mx¨,我们令x1=x, x2=x˙x_1=x,\ x_2 = \dot{x}x1=x, x2=x˙,就能得到这个状态方程了。

这里还牵扯到一个问题,系统的可控性指的是点到点的可控还是轨迹的可控,我们可以看一个例子,下面这幅图横轴是位置,纵轴是速度,如果我们想让小车从A点到B点,我们是走AB这条路呢还是ACB这条路呢?
在这里插入图片描述
事实上,AB这条路是行不通的,我们不能在速度为正的时候位移却一直在往后,所以我们只能走ACB这条路,即速度先逐渐降低,然后反向,最后再把速度加上去。所以,系统的可控性指的是我们可以从一点到达另一点,却不能使系统按照我们想要的轨迹去走。

回到问题

在这里插入图片描述
我们对m2进行受力分析,m2x2¨=k(x1−x2)m_2\ddot{x_2}=k(x_1-x_2)m2x2¨=k(x1x2),对m1进行受力分析,m1x1¨=u−k(x1−x2)m_1\ddot{x_1} = u-k(x_1-x_2)m1x1¨=uk(x1x2),我们稍微简化一下,m1=m2=1m_1=m_2=1m1=m2=1Kg,k=100,我们就能得到

x2¨=100x1−100x2\ddot{x_2} = 100x_1-100x_2x2¨=100x1100x2

x1¨=u−100x1+100x2\ddot{x_1} = u-100x_1+100x_2x1¨=u100x1+100x2

化成状态方程的形式,令z1=x1, z2=z1˙, z3=x2, z4=z3˙z_1=x_1, \ z_2 = \dot{z_1}, \ z_3=x_2, \ z_4 = \dot{z_3}z1=x1, z2=z1˙, z3=x2, z4=z3˙,就可以写成下面

ddt[z1z2z3z4]=[0100−1000100000011000−1000][z1z2z3z4]+[0100]u\frac{d}{dt} \left[ \begin{matrix} z_1 \\ z_2 \\ z_3 \\ z_4 \end{matrix}\right] = \left[ \begin{matrix} 0 & 1 & 0 & 0 \\ -100 & 0 & 100 & 0 \\ 0 & 0 & 0 & 1 \\ 100 & 0 & -100 & 0 \end{matrix}\right] \left[ \begin{matrix} z_1 \\ z_2 \\ z_3 \\ z_4 \end{matrix}\right] +\left[ \begin{matrix} 0 \\ 1 \\ 0 \\ 0 \end{matrix}\right]udtdz1z2z3z4=010001001000010001000010z1z2z3z4+0100u

我们用MATLAB来求解一下这个系统的可控性,MATLAB里面有Co = ctrb(A,B)这样一个函数,求一下Co矩阵的秩是4,也就是这个系统是可控的。也就是我们可以从一个小车上施加力,但会控制两个车的速度和位置。最后up主总结系统的可控是指理论上的可控,实际上的系统有各种的物理约束,不一定是可控的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值