特征值和特征向量
对于特征值或者特征向量,很多人的记忆都停留在:
A是一个矩阵,是一个特征向量,是一个特征值。或者熟悉MATLAB的同学会():
>>[T, D] = eig(A)
T和D都是矩阵,T的列向量是A的特征向量,D是对角矩阵且是A的对应特征向量的特征值。那么寻找特征向量的意义又是什么呢?
我们先从下面的短视频来直观的感受一下特征向量和特征值:
线性变换时的特征向量
我们有矩阵A:
通过MATLAB,我们可以计算出:
>>[T D] = eig([3 1; 0 2])
T =
1.0000 -0.7071
0 0.7071
D =
3 0
0 2
视频中,我标出了3个向量:
可以看出,虽然经过了线性变换, 和 (A的特征向量)依然停留在之前方向,而 却偏离了之前的方向。这就是特征向量的含义。那特征值呢?视频中不难看出,虽然 和 停留在之前方向,但是他们的长度却被分别放大了3倍和2倍。这就是特征值的含义。
那它们存在的意义呢?我们探讨的是工程数学,所以我们当然是考虑计算量。
假设现在有个向量:
如果我们需要计算,计算的过程会很繁琐:
但是,如果我们根据,可以将A改写成,所以上面的计算可以变为:
而,上面的计算又可以写成:
而
将这些代入的,计算会简单太多。那么,计算 又有什么意义呢?请继续往下看。
动态系统的解以及稳定性
生活中方方面面遇到的几乎都是动态的系统,比方说人口的增长,汽车的行驶,倒立摆等等。当提到动态系统的时候,我们需要很自然地想到微分方程来表示这样的动态系统,比方说人口增长:
或者
.
表示增长率(动态系统的变化)和人口基数相关。而且我们需要很快就反应过来,它的解是:
表示时间 时刻的状态值,或者初始状态。所以当大于零的时候,人口会一直增长,这样的系统就不稳定(当然,人口的增长除了和基数有关,也受其它条件限制,不会无尽地增长)。而当小于零的时候,人口会逐渐降低,直至消失,也就是会趋向于稳定。
刚刚所描述的动态系统,只有一个状态。如果有更多的状态呢?现代控制理论会用State Space Representation来描述一个系统(这里仅局限于线性时不变系统,且没有输入):
是一个向量,描述系统的各个状态。回想刚刚人口增长动态系统的解,对于这个多状态的系统,我们很容易知道它的解是:
对于,我们可以通过泰勒展开式进行求解:
然而,如果我们根据(即 ),对进行坐标变换:
而,我们可以得到:
进而得到:
新的动态系统的解是:
或者,更直白点:
这里,我们可以很显然知道,如果有一个是大于零的,这个系统对应的状态就是不稳定的,也导致了整个系统的不稳定。所以,判断系统是否稳定,可以通过计算矩阵的特征值来判断。
另一种分析思路是,根据 ,我们可以将改写成:
\begin{split}
e^{At}&=TT^{-1}+TDT^{-1}t+\frac{TDT^{-1}TDT^{-1}t^2}{2!}+\frac{TDT^{-1}TDT^{-1}TDT^{-1}t^3}{3!}+\cdot \cdot \cdot \\
&=T[I+Dt+\frac{D^2t^2}{2!}+\frac{D^3t^3}{3!}+...]T^{-1}\\
&=Te^{Dt}T^{-1}\\
\end{split}
所以,这个系统的解是:
对比不难发现, 正是 , 正是 ,而。
准确来说,可以是复数,而判断系统的稳定是看的实数部分,因为(令):
括号内部被限定在单位圆内,真正影响系统的稳定是,所以,我们说,如果所有特征值的实数部分是负数,系统稳定。
举例
我们看下面这个系统:
通过MATLAB,我们很容易计算出
>>eig([0 1; -1 -0.1])
ans =
-0.0500 + 0.9987i
-0.0500 - 0.9987i
所以系统是稳定的(特征值的虚数部分表示这个系统在稳定之前会摇摆,比方说倒立摆,它会左右摇摆慢慢停下来)。
那系统:
通过MATLAB,我们很容易计算出
>>eig([0 1; 1 -0.1])
ans =
-1.0512
0.9512
所以这个系统是不稳定的。
对于不稳定的系统,我们该怎么办呢?开环控制?闭环控制?我将再写几篇关于控制理论的博文。