稳定性
假设有一个「黑盒」,如果值 u 进入这个箱子,就会变成值 ξ。如果这个「黑盒」每时每刻都在输入 u 和输出 ξ。但需要强调时间变化时,我们就会写成 u(t) 和 ξ(t)。但在这里,「黑箱」输出的 ξ(t) 不仅仅与当前输入 u(t) 有关,还与过去输入的 u 有关系。
- 控制系统模型
- 设 u 为踩油门的力度,ξ 为汽车的速度
- 放开油门的状态,u=0,但是这一个瞬间,汽车的速度 ξ 并不是 0,而是在慢慢减少
- 信号传输模型
- 设 u 为无线通信中发出的信号,ξ 为接收到的信号
- 理想状态下,ξ(t)=u(t),但在实际传输过程中会发生衰减、延迟、扭曲甚至反射,最终都会影响信号
我们在这里感兴趣的是模型会不会失控,换句话说,无论从什么状态出发,ξ(t) 都不会超出有限的范围(不会失控);还是某些情况下,∣ξ(t)∣ 会趋近于无穷大(失控)。
对角矩阵
考虑下面这个模型:
x(t)=5000−30000.8x(t−1)
一计算就变成:
x1(t)x2(t)x3(t)=5x1(t−1)−3x2(t−1)0.8x3(t−1)
解出每个式子的答案(递推连乘),就是
x1(t)x2(t)x3(t)=5tx1(0)=(−3)tx2(0)=0.8tx3(0)
还可以写成
x(t)=5t000(−3)t0000.8tx(0)=5000−30000.8tx(0)
只要初始值 x(0) 不满足 x1(0)=x2(0)=0,当 x→∞,x1(t) 和 x2(t) 都会越走越远,这个系统是会失控的。
能简单判断是否失控的关键在于系数矩阵是 对角矩阵 。只要有一个绝对值大于 1,系统就会失控。
x(t)=a1t⋱antx(0)=a1⋱antx(0)
可对角化
如果 A 是对角矩阵,问题就可以迎刃而解。那么,对于一般的 A,是否可以想办法归结为对角矩阵。大部分情况下,这是可行的。
考虑下面这个系统:
(x1(t)x2(t))=(5115)(x1(t−1)x2(t−1))
展开成方程:
x1(t)x2(t)=5x1(t−1)+x2(t−1)=x1(t−1)+5x2(t−1)
这种形式没有办法处理,那么可以考虑这个方程:
y1(t)y2(t)=x1(t)+x2(t)=x1(t)−x2(t)
于是,我们就有一个漂亮的结果:
y1(t)y2(t)=x1(t)+x2(t)=(5x1(t−1)+x2(t−1))+(x1(t−1)+5x2(t−1))=6x1(t−1)+6x2(t−1)=6y1(t−1)=x1(t)−x2(t)=(5x1(t−1)+x2(t−1))−(x1(t−1)+5x2(t−1))=4x1(t−1)−4x2(t−1)=4y2(t−1)
这样就变成一个简单的问题了:
y1(t)y2(t)=6ty1(0)=4ty2(0)
很容易知道 y1,y2 都会失控。
接下去,只需要把 y1,y2 还原成 x1,x2,就可以了。只需要:
x1(t)x2(t)=2y1(t)+y2(t)=2y1(t)−y2(t)
代入上面的式子,
x1(t)x2(t)=26ty1(0)+4ty2(0)=(26t+4t)x1(0)+(26t−4t)x2(0)=26ty1(0)−4ty2(0)=(26t−4t)x1(0)+(26t+4t)x2(0)
当 t→∞ 时,(6t±4t)/2→∞,所以,x1,x2 的系统一样会失控。
用矩阵的语言表达
y(t)=Cx(t),C=(111−1)
原来的问题 x(t)=Ax(t−1) 就变成:
y(t)=Λy(t−1),Λ=(6004)
这里的 Λ 是对角矩阵,所以很容易的得出
y(t)=Λty(0)=(6t004t)(y1(0)y2(0))
接下来,把 y 还原成 x 即可。还原时使用变换:
(x1(t)x2(t))=(2y1(t)+y2(t)2y1(t)−y2(t))
本质上其实是,
x(t)=C−1y(t)=(1/21/21/2−1/2)(y1(t)y2(t))
使用上面的矩阵还原 x,可得
(x1(t)x2(t))=(1/21/21/2−1/2)(y1(t)y2(t))=(1/21/21/2−1/2)(6t004t)(y1(0)y2(0))=(6t/26t/24t/2−4t/2)(y1(0)y2(0))
其中,初始值也满足 y(0)=Cx(0),于是:
(x1(t)x2(t))=(6t/26t/24t/2−4t/2)(111−1)(x1(0)x2(0))=(26t+4t26t−4t26t−4t26t+4t)(x1(0)x2(0))
综上,用矩阵运算得出了相同的结果。
一般化
总结一下这些流程:
- 选定某矩阵 C,用其将 x(t) 变成另一组变量 y(t)=Cx(t);
- 把关于 x(t) 的差分方程改写成关于 y(t) 的方程;
- 新的方程的系数矩阵如果是对角矩阵,那么就很容易求解;
- 把解出来的 y(t) 还原为 x(t)。
整个过程的关键在于,变换后的 y(t) 的方程要具有对角矩阵的形式 。
并不是任意的 C 都可以,它一定要在 x 和 y 之间建立一一对应(双射)。
我们考虑的问题是:
y(t)x(t)=Cx(t)=C−1y(t)
也就是 x→y 为顺,y→x 为逆。现在反过来,改写成:
x(t)y(t)=Py(t)=P−1x(t)
这样 y→x 为顺,x→y 为逆。
很显然,
CP=P−1=C−1
于是有:
y(t)=P−1x(t)=P−1Ax(t−1)=P−1A(Py(t−1))=(P−1AP)y(t−1)
从 y 的角度,x(t)=Ax(t−1) 呈现出以下形态:
y(t)Λ=Λy(t−1)=P−1AP
如果 Λ 是对角矩阵,则可以用 y(t)=Λty(0) 求出 y(t)。
接下来,根据 x(t)=Py(t) 和 y(0)=P−1x(0),可以得到最终的 x:
x(t)=Py(t)=PΛty(0)=PΛtP−1x(0)
问题的重点就在于 如何选择合适的可逆矩阵 P ,使得 P−1AP 是对角矩阵。
特征值、特征向量
我们的任务就是要找到对角化所需要的 P
P−1AP≡Λ=diag(λ1,⋯,λn)
两边左乘 P,就变成 AP=PΛ,也就是:
A(p1,⋯,pn)=(p1,⋯,pn)λ1⋱λn
按照分块矩阵乘法,分别计算左右两边,可以得到:
(Ap1,⋯,Apn)=(λ1p1,⋯,λnpn)
数 λ 和向量 p 分别称为「特征值」和「特征向量」。
所以,求合适的 P 分为两步:
- 求 A 的特征值 λ1,⋯,λn 及其对应的特征向量 p1,⋯,pn
- 将求得的特征向量排列起来,即 P=(p1,⋯,pn)
严格来讲,上面并不严谨,得确认 P 不是奇异,才可以求 P−1。
MATLAB:
1 2 3
| A = [ 5 3 -4;6 8 -8; 6 9 -9] eig(A) X \ A*X
|
Mathematica:
1 2 3 4 5
| Eigenvalues[({ {5, 3, -4}, {6, 8, -8}, {6, 9, -9} })]
|
从几何学角度,特征向量乘上 A,除了长度会有伸缩变化,方向不发生改变。这里的长度变化率,就是特征值。
所以判断是否是特征向量就可以通过这个特性:
例:设 A=[1562],u=[6−5] 和 v=[3−2],u 和 v 是否是 A 的特征向量?
解
AuAv=[1562][6−5]=[−2420]=−4[6−5]=−4u=[1562][3−2]=[−911]=λ[3−2]
因此,u 是特征值 -4 对应的特征向量,但 Av 不是 v 的倍数,所以 v 不是 A 的特征向量。
特征方程
特征方程是一个数量方程,包含了有关特征值的信息。
假设 λ 是特征值,那么我们知道 Ax=λx。那么可以得到一个方程,即
(A−λI)x=0
如果 A=[1562],可以得到:
(A−λI)=[1562]−[λ00λ]=[1−λ562−λ]
由逆矩阵定理,这个问题等价于求出所有的 λ,使得矩阵 A−λI 为不可逆矩阵。那么,可以通过行列式为 0 求解。
所以,
det(A−λI)=(1−λ)(2−λ)−30=λ2−3λ−28=(λ−7)(λ+4)
若 det(A−λI)=0,则 λ=−4 或者 λ=7,所以 A 的特征值是 -4 和 7。
Jordan 标准型
就算不能对角化,也可以通过变换得到与对角矩阵很接近的形式——Jordan 标准型。
参考资料
- 平冈和幸,堀玄.程序员的数学.3,线性代数[M].人民邮电出版社,2016.
- [美] 戴维 C.雷,[美] 史蒂文 R.雷,[美] 朱迪 J.麦克唐纳. 线性代数及其应用(原书第5版),机械工业出版社,2018.10