矩阵的对角化以及矩阵的n次幂
(特征向量与特征值的应用)
前言:
在上一篇文章中,我记录了学习矩阵的特征向量和特征值的学习笔记,所关注的是那些矩阵A作用于向量x后,方向不发生改变的x(仅有尺度的缩放)。
线性代数 --- 特征值与特征向量(上)-CSDN博客文章浏览阅读1.1k次,点赞9次,收藏21次。文章介绍了特征向量与特征值的基本概念,并给出了详细的说明图示和例子。至于如何求解矩阵的特征向量与特征值,我在下一篇文章中给出了说明。https://blog.csdn.net/daduzimama/article/details/136455766
此外,我也在另一篇文章中提到了一般矩阵的特征值与特征向量的求法。 线性代数 --- 特征值与特征向量(下)-CSDN博客文章浏览阅读1.3k次,点赞31次,收藏19次。本文介绍了求解一般矩阵的特征向量和特征值的具体方法。https://blog.csdn.net/daduzimama/article/details/136608493
正文:
Part I 矩阵的对角化
矩阵对角化的意义:
这里,我打算通过这篇文章整理/梳理一下矩阵对角化的学习笔记。既然已经知道了如何求出矩阵的特征向量和特征值现,那么找到这些东西有什么用呢?答案就是矩阵的对角化。
(截图来自于参考文献2)
假设一个n维方阵A经过计算后得到n个线性无关的特征向量x1,x2...,xn,对应n个λ1,λ2...,λn。我们有:
现在,我们把这些特征向量都放到一个矩阵中,合成一个新的矩阵X。看看矩阵A乘以矩阵X后会怎么样。首先,我们按照如下方式构建一个新矩阵X,我们称之为特征向量矩阵(Eigen-vector matrix)。因为该矩阵的每一列都是一个特征向量,所以用大写的X表示:
令A乘以X,根据矩阵的乘法原则,矩阵A与矩阵X的乘法可以看成是把矩阵X各列看成权重的线性组合的结果(这句话不好懂,可以看看下面的图示)
得到:
注意,之前用特征向量构造的新矩阵X,又再一次出现了。与此同时,他的旁边出现了一个新矩阵,这是一个对角矩阵,主对角线上的元素全是特征值λ。这也是一个新矩阵,称之为特征值矩阵(Eigen-value matrix)。因其主对角线上的元素都是特征值,所以用大写的(即,大写的λ)表示:
最终得到:
The Key Equation
又因为,我之前所构建的特征向量矩阵X是由n个线性无关的特征向量组成的,列与列之间线性无关。因此,矩阵X是可逆的。现在我们把等式两边同时左乘一个X的逆矩阵,即完成了矩阵A的对角化:
(对角化公式)
反过来,如果把等式两边同时右乘X的逆矩阵,就得到了矩阵A的又一种分解公式(之前学过的分解有基于高斯消元的LU分解,基于gram-schmidt正交化的QR分解):
(矩阵A的分解公式)
注意,这一切操作都基于一个前提:矩阵A有n个线性无关的特征向量
什么样的矩阵可以对角化?
当n维方阵A有n个不同的特征值时,矩阵A才能用上述方式对角化。因为,如果A有n个不同的特征值,那么一定对应有n个相互独立的特征向量。但反过来就不一定成立,比如说单位矩阵有n个不同的特征向量,但他的特征值都是1。下面是我用python在jupyter中所写的代码,他先是导入了部分的数据库,然后计算了一个3x3的单位矩阵的特征向量和特征值。根据结果来看,单位矩阵有3个不同的特征向量【1,0,0】,【0,1,0】,【0,0,1】,但这些特征向量都共用一个特征值1。
(截图来自于我用Jupyter notebook所生成的代码)
矩阵对角化的例子:
最后我们给出一个矩阵对角化的例子作为这部分的小结,假设方阵矩阵A为:
首先,用jupyter note book求出特征向量和特征值:
注意,他这里的数组要竖着看,也就是说,第一特征向量是array中的第一列【1,0】。第二个特征向量是array中的第二列【0.7071,0.7071】 。
Remark: 理论上,无论你有什么软件去去特征向量,特征向量的长度都应该是1,或者说都应该是一个单位向量。
为了方便,我把后面那个特征向量改成[1,1](我这里不是乱改的,如果自己动手算也能得到这个结果)。如此一来我们得到的两个特征值和他们各自对应的特征向量为:
和
相应的在这里我们就能写出特征值矩阵:
齐次,用特征向量构建特征向量矩阵X:
求特征向量矩阵X的逆:
代入矩阵的对角化公式完成对角化,看乘法的结果是否正好等于特征向量矩阵:
这里要注意,矩阵的乘法在python里面的操作符是“@”,也就是上图中我用红框框出来的。如果写错了,计算结果就不对了,我在上图中也演示的错误的结果。
同样的,代入矩阵A的分解公式验证等式两边是否相等:
Part II 矩阵的n次幂
矩阵n次幂的计算方法:
当我们要计算矩阵的n次幂时,我们可以先基于前面的矩阵的分解公式对矩阵进行分解后,再计算分解后的矩阵的n次幂。正如下图所示,中间的X与X的逆的乘积都消去了,最终A的n次幂都落在了特征值矩阵的头上。
好在是一个对角阵他的n次幂等于,对角线各元素的n次幂。例如下图中,对角阵A的2次幂和3次幂的结果等于主对角线上元素的对应次幂。
这就是说,假设矩阵为:
则它所对应的n次幂为:
注意,通过特征向量和特征值对矩阵A的分解之所以会被用于计算矩阵A的n次幂,是因为这种矩阵的分解方法不同于之前学习的矩阵分解,例如基于高斯消元的LU分解和基于gram-schmidt的QR分解。比如说,我们分别用LU分解和QR分解去计算矩阵的n次幂,我们只会得到下面的结果:
矩阵A的n次幂的例子(A Markov matrix):
现有一个2x2的Markov矩阵:
计算他的特征向量与特征值,基于特征值的判断矩阵是否可对角化。
这个2x2的方阵有两个不同的特征值,对应两个不同的特征向量。因此可以被对角化。这里顺便再检查一下特征向量的长度是否为1。
构建特征值矩阵,特征向量矩阵和特征向量矩阵的逆矩阵:
计算矩阵A的平方:
计算A的5次方:
计算A的20次方(这里我使用了python自带的函数算的):
到目前为止,我们知道矩阵的计算只和两个数的n次幂有关,一个是1,一个是0.5。又因为1的n次幂不变,而随着n的增加,0.5的n次幂只会越来越小。因此,可以预料的是随着n增加的越来越大,这个计算结果必然会收敛到一个极限,这次我们再试试A的100次方:
可见计算到A的20次幂的时候,基本上就已经达到极限了,即一个定值。这说明Markov matrix是一个稳态矩阵。
结合这个例子我们可以给出一个推论:
当一个矩阵的所有特征向量的绝对值都小于一时,这个矩阵就是一个稳态矩阵。
(全文完)
--- 作者,松下J27
参考文献(鸣谢):
1,Lec22_对角化和矩阵乘幂_哔哩哔哩_bilibili
2,《Introduction to Linear algebra》Fifth Edition --- Gilbert strang,page 304
(配图与本文无关)
版权声明:所有的笔记,可能来自很多不同的网站和说明,在此没法一一列出,如有侵权,请告知,立即删除。欢迎大家转载,但是,如果有人引用或者COPY我的文章,必须在你的文章中注明你所使用的图片或者文字来自于我的文章,否则,侵权必究。 ----松下J27