前言

给定系统的状态转移方程:

就可以计算对应的状态转移矩阵:


一旦有了系统的状态转移矩阵,那么我们就可以计算系统的零输入响应:

那么我们要如何计算系统的状态转移矩阵呢?
时域的微分系统分析很复杂,我们可以通过拉式变换将其转换为代数系统,在代数系统求解后我们再拉式逆变换回时域。
我们先将它转移到复频域(不考虑输入):

然后进行一系列的代数变换,我们就可以得到零输入响应在复频域的闭合解:

之后我们进行拉式逆变换就可以得到零输入响应在时域的闭合解:
这个求法有两个计算点,一个是矩阵的逆的求解,另一个是拉式变换以及反变换,这篇博客讨论一下矩阵的逆为什么可以通过伴随矩阵进行求解。


数学证明

从矩阵的逆的定义入手,满足下列等式的矩阵B是A的逆矩阵:

这其实等价于对于B的每一列$b_j$都满足:
$Ab_j=e_j$($e_j$是第j个标准基向量)

利用克拉默法则(Cramer’s Rule) 我们可以将等式进一步拆解:
$b_{ij}=\frac{det(A_i)}{det(A)}$
所以只要B矩阵中的每个元素满足上面的等式,那么B就是A矩阵的逆。
但是这上面的表达式离伴随矩阵还有些距离,我们仔细观察$A_i$,会发现带入的列向量是标准基向量。
标准基向量是很好的,它只有第j行是1。
利用这个性质,我们将$A_i$ 的第i列展开,计算每个下标对应的代数余子式并相加。
因为第i列只有第j行是1,所以有如下等式:
$det(A_i)=C_{ji}$
$C_{ji}$ 代表第j行第i列的代数余子式。
之后我们一步步的回代,就可以得到如下等式:
$b_{ij}=\frac{C_{ji}}{det(A)}$
也就是:

我们回忆一下伴随矩阵的定义:

证毕。


克莱姆法则

上面的推理除了克莱姆法则,其他的部分都没有使用二级结论。
所以我又去查了一下克莱姆法则是怎么证明的。
网络上很多人都是使用逆矩阵和伴随矩阵的定义证明克莱姆法则,这不就循环论证了吗。
我询问了gpt后得到了一种克莱姆法则的直接证明方法,现在也记录在下面。
克莱姆法则的定义如下:
对于: $Ax=b$ (x、b是列向量)
有: $x_i=\frac{det(A_i)}{det(A)}$ ($x_i$ 代表x的第i个元素,$A_i$ 代表用b 代替A中的第i列得来的矩阵 )
($A=[a_1,a_2,…,a_n]$ , $A_i=[a_1,a_2,…,a_{i-1},b,a_{i+1},…,a_n]$)
证明过程不难理解。
我们首先将等式 $Ax=b$ 的左边拆分成列向量的和的形式,
那么就有:$Ax=[a_1,a_2,…,a_n]x=x_1a_1+x_2a_2+…+x_na_n=b$
我们把这个列向量和的形式表达的b带入到$A_i$ 中,得到下式:
$det(A_i)=det([a_1,a_2,…,a_{i-1},b,a_{i+1},…,a_n])=det([a_1,a_2,…,a_{i-1},\sum_{j=1}^{n}x_ja_j,a_{i+1},…,a_n])$

因为行列式对列和行都有线性性(由行列式的定义决定),我们可以将求和号移到求行列式的外面,得到下面的等式:
$det(A_i)=\sum_{j=1}^{n}x_jdet([a_1,a_2,…,a_{i-1},a_j,a_{i+1},…,a_n])$
当j!=i的时候,列向量间不是线性无关的(因为有完全相同的两列),所以行列式为0,
忽略这些为零的求和项,上面等式可以再化简:
$det(A_i)=x_idet([a_1,a_2,…,a_{i-1},a_i,a_{i+1},…,a_n])=x_idet(A)$
证毕。