状态空间表示把一个动态系统改写成一组一阶方程。与其处理一个高阶微分方程,不如跟踪一个状态向量,其中包含预测系统下一步行为所需的信息。

如果你搜索过“如何把微分方程化为状态空间形式”,核心思路就是:选取状态变量,为每个变量的导数写出方程,并让整个模型保持为一阶形式。

用一句话理解状态空间表示

一般来说,状态空间模型可以写成

x(t)=f(x(t),u(t),t)x'(t) = f(x(t), u(t), t)

这里,x(t)x(t) 是状态向量;如果系统有输入,u(t)u(t) 就表示输入。当系统是线性时不变系统时,同样的思想可以写成矩阵形式

x(t)=Ax(t)+Bu(t),y(t)=Cx(t)+Du(t)x'(t) = Ax(t) + Bu(t), \qquad y(t) = Cx(t) + Du(t)

这种矩阵写法在控制理论和微分方程中很常见,但状态空间的概念并不局限于线性情形。

状态到底表示什么

状态是当前各个量的集合;一旦输入已知,这些量就足以确定系统未来的行为。对于一个运动物体来说,只有位置通常还不够,位置和速度一起往往才够。

这正是状态空间表示有用的原因。它把一个随时间演化的问题,转化为标准的一阶形式,更便于分析、仿真,以及与矩阵方法结合。

为什么要这样改写系统

很多模型一开始都是高阶微分方程。状态空间形式是在不改变系统本质动力学的前提下,对它们进行改写。

这很重要,因为一阶系统可以统一到同一种结构中。模型一旦写成这种结构,就更容易一致地讨论初始条件、输入、输出和稳定性。

例题:把二阶方程化为状态空间形式

从下面的方程开始:

y+3y+2y=u(t)y'' + 3y' + 2y = u(t)

这里 u(t)u(t) 是输入。先选取能够刻画系统当前状态的状态变量:

x1=y,x2=yx_1 = y, \qquad x_2 = y'

现在为每个状态变量写出一个一阶方程。由于 x1=yx_1 = y

x1=x2x_1' = x_2

由于 x2=yx_2 = y',所以也有 x2=yx_2' = y''。把原方程整理后得到

y=3y2y+u(t)y'' = -3y' - 2y + u(t)

再代入 y=x1y = x_1y=x2y' = x_2

x2=2x13x2+u(t)x_2' = -2x_1 - 3x_2 + u(t)

因此,状态方程为

x1=x2x2=2x13x2+u(t)\begin{aligned} x_1' &= x_2 \\ x_2' &= -2x_1 - 3x_2 + u(t) \end{aligned}

写成向量形式,令

x=(x1x2),x = \begin{pmatrix} x_1 \\ x_2 \end{pmatrix},

则有

x=(0123)x+(01)u(t)x' = \begin{pmatrix} 0 & 1 \\ -2 & -3 \end{pmatrix} x + \begin{pmatrix} 0 \\ 1 \end{pmatrix} u(t)

如果输出是原来的量 yy,那么

y=(10)xy = \begin{pmatrix} 1 & 0 \end{pmatrix} x

关键步骤,就是把一个二阶方程转化为两个一阶方程。这正是状态空间表示的核心。

这个例子里要注意什么

状态变量的选择是有原因的。这样的选取方式使模型能够写成一阶系统。

还要注意,输出 yy 并不等同于完整的状态向量。在这个例子中,y=x1y = x_1,而完整状态是 (x1,x2)(x_1, x_2)。这两个概念有时会重合,但并不天然相同。

化为状态空间形式时的常见错误

把状态和输出混为一谈

状态包含系统演化所需的内部变量。输出则是你选择观测的量。有时两者会重合,但并不自动相同。

以为表示方式是唯一的

通常并不是。只要能包含足够的信息,不同的状态变量选择都可以描述同样的动力学。

忘记必须是一阶形式

状态空间模型必须写成关于状态变量的一阶方程组。如果你最后还保留着某个状态变量的二阶导数,那就说明改写还没有完成。

把所有模型都当成线性模型

只有当方程关于所选状态变量是线性的,才可以使用带有 AABBCCDD 的矩阵形式。非线性系统同样可以用状态空间表示,只不过它们写成函数形式,而不是常系数矩阵。

状态空间表示用在哪里

状态空间表示广泛出现在微分方程、控制理论、信号处理、机器人学和物理学中。尤其当你关心系统如何随时间变化,以及输入如何影响这种变化时,它特别有用。

如果模型是线性的,矩阵方法会尤其方便。例如,矩阵 AA 的特征值可以帮助描述增长、衰减或振荡,但这仍然依赖于模型本身所作的假设。

自己试一试

考虑

y+4y+5y=0y'' + 4y' + 5y = 0

并取 x1=yx_1 = yx2=yx_2 = y'。把它改写成一阶系统,然后写出矩阵 AA。如果你已经理解了,再试一个带输入项的类似题目,看看矩阵 BB 是如何出现的。

需要解题帮助?

上传你的问题,几秒钟内获得经过验证的分步解答。

打开 GPAI Solver →