线性代数 --- 矩阵的对角化以及矩阵的n次幂

news/2024/5/18 0:21:41

矩阵的对角化以及矩阵的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。我们有:

\left\{\begin{matrix} Ax_{1}=\lambda x_{1}\\ Ax_{2}=\lambda x_{2}\\ ...\\ Ax_{n}=\lambda x_{n} \end{matrix}\right.

        现在,我们把这些特征向量都放到一个矩阵中,合成一个新的矩阵X。看看矩阵A乘以矩阵X后会怎么样。首先,我们按照如下方式构建一个新矩阵X,我们称之为特征向量矩阵(Eigen-vector matrix)。因为该矩阵的每一列都是一个特征向量x_{i},所以用大写的X表示:

X=\begin{bmatrix} | & | & &| \\ | & | & & | \\ x_{1} & x_{2} &... &x_{n} \\ | & | & & | \\ | & | & & | \end{bmatrix}

        令A乘以X,根据矩阵的乘法原则,矩阵A与矩阵X的乘法可以看成是把矩阵X各列看成权重的线性组合的结果(这句话不好懂,可以看看下面的图示)

得到:

AX=A\begin{bmatrix} | & | & &| \\ | & | & & | \\ x_{1} & x_{2} &... &x_{n} \\ | & | & & | \\ | & | & & | \end{bmatrix}=\begin{bmatrix} | & | & &| \\ | & | & & | \\ Ax_{1} & Ax_{2} &... &Ax_{n} \\ | & | & & | \\ | & | & & | \end{bmatrix}

=\begin{bmatrix} | & | & &| \\| & | & &| \\ \lambda _{1}x_{1} & \lambda _{2}x_{2} &... &\lambda _{n}x_{n} \\ | & | & & | \\ | & | & & | \end{bmatrix}=\begin{bmatrix} | & | & &| \\ | & | & &| \\ x_{1} & x_{2} &... &x_{n} \\ | & | & & | \\ | & | & & | \end{bmatrix}\begin{bmatrix} \lambda _{1} &0 &... &0 \\0 & \lambda _{2} &... &0 \\... & ...&... & ...\\ 0 & 0&... & 0\\ 0 & 0 &... & \lambda _{n} \end{bmatrix}

        注意,之前用特征向量构造的新矩阵X,又再一次出现了。与此同时,他的旁边出现了一个新矩阵,这是一个对角矩阵,主对角线上的元素全是特征值λ。这也是一个新矩阵,称之为特征值矩阵(Eigen-value matrix)。因其主对角线上的元素都是特征值\lambda _{i},所以用大写的\Lambda(即,大写的λ)表示:

\Lambda =\begin{bmatrix} \lambda _{1} &0 &... &0 \\0 & \lambda _{2} &... &0 \\... & ...&... & ...\\ 0 & 0&... & 0\\ 0 & 0 &... & \lambda _{n} \end{bmatrix}

 最终得到:

AX=\begin{bmatrix} | & | & &| \\ | & | & &| \\ x_{1} & x_{2} &... &x_{n} \\ | & | & & | \\ | & | & & | \end{bmatrix}\begin{bmatrix} \lambda _{1} &0 &... &0 \\0 & \lambda _{2} &... &0 \\... & ...&... & ...\\ 0 & 0&... & 0\\ 0 & 0 &... & \lambda _{n} \end{bmatrix}=X\Lambda

The Key Equation 

AX=X\Lambda

         又因为,我之前所构建的特征向量矩阵X是由n个线性无关的特征向量组成的,列与列之间线性无关。因此,矩阵X是可逆的。现在我们把等式两边同时左乘一个X的逆矩阵,即完成了矩阵A的对角化:

\mathbf{X^{-1}AX=X^{-1}X\Lambda=\Lambda}

(对角化公式)

        反过来,如果把等式两边同时右乘X的逆矩阵,就得到了矩阵A的又一种分解公式(之前学过的分解有基于高斯消元的LU分解,基于gram-schmidt正交化的QR分解):

 \mathbf{AXX^{-1}=X\Lambda X^{-1}\Rightarrow A=X\Lambda X^{-1}}

(矩阵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为:

A=\begin{bmatrix} 1 &5 \\ 0 & 6 \end{bmatrix}

首先,用jupyter note book求出特征向量和特征值:

        注意,他这里的数组要竖着看,也就是说,第一特征向量是array中的第一列【1,0】。第二个特征向量是array中的第二列【0.7071,0.7071】 。

Remark: 理论上,无论你有什么软件去去特征向量,特征向量的长度都应该是1,或者说都应该是一个单位向量。

        为了方便,我把后面那个特征向量改成[1,1](我这里不是乱改的,如果自己动手算也能得到这个结果)。如此一来我们得到的两个特征值和他们各自对应的特征向量为:

\lambda _{1}=1,x_{1}=\begin{bmatrix} 1\\ 0 \end{bmatrix}        和        \lambda _{2}=6,x_{2}=\begin{bmatrix} 1\\ 1 \end{bmatrix}

相应的在这里我们就能写出特征值矩阵\Lambda

\Lambda =\begin{bmatrix} \lambda 1 & 0\\ 0 & \lambda 2 \end{bmatrix}=\begin{bmatrix} 1 & 0\\ 0 & 6 \end{bmatrix}

 齐次,用特征向量构建特征向量矩阵X:

X=\begin{bmatrix} | & |\\ x_{1} &x_{2} \\ |& | \end{bmatrix}=\begin{bmatrix} 1 &1\\ 0 &1 \end{bmatrix}

 求特征向量矩阵X的逆:

 X^{-1}=\begin{bmatrix} 1 &-1 \\ 0& 1 \end{bmatrix}

代入矩阵的对角化公式完成对角化,看乘法的结果是否正好等于特征向量矩阵\Lambda: 

 X^{-1}AX=\begin{bmatrix} 1 &-1 \\ 0& 1 \end{bmatrix}\begin{bmatrix} 1 &5 \\ 0& 6 \end{bmatrix}\begin{bmatrix} 1 &1 \\ 0& 1 \end{bmatrix}=\begin{bmatrix} 1 &0 \\ 0& 6 \end{bmatrix}

        这里要注意,矩阵的乘法在python里面的操作符是“@”,也就是上图中我用红框框出来的。如果写错了,计算结果就不对了,我在上图中也演示的错误的结果。 

同样的,代入矩阵A的分解公式验证等式两边是否相等:

A=X\Lambda X^{-1}


 Part II 矩阵的n次幂

矩阵n次幂的计算方法:        

        当我们要计算矩阵的n次幂时,我们可以先基于前面的矩阵的分解公式对矩阵进行分解后,再计算分解后的矩阵的n次幂。正如下图所示,中间的X与X的逆的乘积都消去了,最终A的n次幂都落在了特征值矩阵\Lambda的头上。

A=X\Lambda X^{-1}\Rightarrow A^{n}=(X\Lambda X^{-1})(X\Lambda X^{-1})...(X\Lambda X^{-1})=X\Lambda ^{n}X^{-1}

好在\Lambda是一个对角阵他的n次幂等于,对角线各元素的n次幂。例如下图中,对角阵A的2次幂和3次幂的结果等于主对角线上元素的对应次幂。

 这就是说,假设\Lambda矩阵为:

\Lambda =\begin{bmatrix} \lambda _{1}& & \\ & \lambda _{2} & \\ & & \lambda _{3} \end{bmatrix}

则它所对应的n次幂为:

 \Lambda ^{n}=\begin{bmatrix} \lambda _{1}^{n}& & \\ & \lambda _{2}^{n} & \\ & & \lambda _{3}^{n} \end{bmatrix}

        注意,通过特征向量和特征值对矩阵A的分解之所以会被用于计算矩阵A的n次幂,是因为这种矩阵的分解方法不同于之前学习的矩阵分解,例如基于高斯消元的LU分解和基于gram-schmidt的QR分解。比如说,我们分别用LU分解和QR分解去计算矩阵的n次幂,我们只会得到下面的结果:

矩阵A的n次幂的例子(A Markov matrix):

现有一个2x2的Markov矩阵:

A=\begin{bmatrix} 0.8 &0.3 \\ 0.2& 0.7 \end{bmatrix}

  

计算他的特征向量与特征值,基于特征值的判断矩阵是否可对角化。

        这个2x2的方阵有两个不同的特征值,对应两个不同的特征向量。因此可以被对角化。这里顺便再检查一下特征向量的长度是否为1。

 构建特征值矩阵,特征向量矩阵和特征向量矩阵的逆矩阵:

X=\begin{bmatrix} 0.8320502&-0.70710678 \\ 0.5547002& 0.70710678 \end{bmatrix},\Lambda =\begin{bmatrix} 1&0 \\ 0& 0.5 \end{bmatrix} 

X^{-1}=\begin{bmatrix} 0.72111026& 0.72111026 \\ -0.56568542& 0.84852814 \end{bmatrix} 

计算矩阵A的平方:

A^{2}=X\Lambda ^{2}X^{-1}=\begin{bmatrix} 0.8320502&-0.70710678 \\ 0.5547002& 0.70710678 \end{bmatrix}\begin{bmatrix} 1^{2}&0 \\ 0& 0.5^{2} \end{bmatrix}\begin{bmatrix} 0.72111026& 0.72111026 \\ -0.56568542& 0.84852814 \end{bmatrix}

计算A的5次方:

A^{5}=X\Lambda ^{5}X^{-1}=\begin{bmatrix} 0.8320502&-0.70710678 \\ 0.5547002& 0.70710678 \end{bmatrix}\begin{bmatrix} 1^{5}&0 \\ 0& 0.5^{5} \end{bmatrix}\begin{bmatrix} 0.72111026& 0.72111026 \\ -0.56568542& 0.84852814 \end{bmatrix}

 计算A的20次方(这里我使用了python自带的函数算的):

        到目前为止,我们知道矩阵的计算只和两个数的n次幂有关,一个是1,一个是0.5。又因为1的n次幂不变,而随着n的增加,0.5的n次幂只会越来越小。因此,可以预料的是随着n增加的越来越大,这个计算结果必然会收敛到一个极限,这次我们再试试A的100次方:

A^{100}=X\Lambda ^{100}X^{-1}=\begin{bmatrix} 0.8320502&-0.70710678 \\ 0.5547002& 0.70710678 \end{bmatrix}\begin{bmatrix} 1^{100}&0 \\ 0& 0.5^{100} \end{bmatrix}\begin{bmatrix} 0.72111026& 0.72111026 \\ -0.56568542& 0.84852814 \end{bmatrix}

可见计算到A的20次幂的时候,基本上就已经达到极限了,即一个定值。这说明Markov matrix是一个稳态矩阵。

结合这个例子我们可以给出一个推论:

当一个矩阵的所有特征向量的绝对值都小于一时,这个矩阵就是一个稳态矩阵。


 (全文完) 

--- 作者,松下J27

参考文献(鸣谢):

1,Lec22_对角化和矩阵乘幂_哔哩哔哩_bilibili

2,《Introduction to Linear algebra》Fifth Edition --- Gilbert strang,page 304

(配图与本文无关) 

版权声明:所有的笔记,可能来自很多不同的网站和说明,在此没法一一列出,如有侵权,请告知,立即删除。欢迎大家转载,但是,如果有人引用或者COPY我的文章,必须在你的文章中注明你所使用的图片或者文字来自于我的文章,否则,侵权必究。 ----松下J27


http://www.mrgr.cn/p/67781364

相关文章

IIS设置文件上传的最大文件大小

上传大文件一直失败,找到设置IIS的下列选项 记录编程的点滴,体会学习的乐趣

(中文规格)FPGA - 现场可编程门阵列: XC7S15-1CPGA196I、LCMXO3L-4300C-5BG256C,FS32K142HFT0VLLT汽车微控制器

(中文规格)FPGA - 现场可编程门阵列: XC7S15-1CPGA196I、LCMXO3L-4300C-5BG256C,FS32K142HFT0VLLT汽车微控制器1、XC7S15-1CPGA196I Spartan-7现场可编程门阵列 产品种类:FPGA - 现场可编程门阵列系列:XC7S15逻辑元件数量:12800 LE自适应逻辑模块 - ALM:2000 ALM嵌入式…

java EasyExcel 导出不同dto到多sheet,同时有动态字段,分页写入方案,解决存在oom的问题

思路 1 将一次查询数据改成分页查询,比如一次2000条, 2 将每次查询的数据按业务分组计算每类业务 动态列追加的最大次数 treeMap 追加列 2 在excel列表头则是追加2列,名称自定义,我这边是补数字,示例 追加列1,追加列2 我的业务是按数据库存放的图片来确定最大追加…

电商技术揭秘三十五:智能风控功能架构浅析

相关系列文章 电商技术揭秘相关系列文章合集(1) 电商技术揭秘相关系列文章合集(2) 电商技术揭秘二十八:安全与合规性保障 电商技术揭秘二十九:电商法律合规浅析 电商技术揭秘三十:知识产权保…

使用EF框架的优化(五)

推荐MiniProfiler插件 工欲善其事,必先利其器。我们使用EF和在很大程度提高了开发速度,不过随之带来的是很多性能低下的写法和生成不太高效的sql。虽然我们可以使用SQL Server Profiler来监控执行的sql,不过个人觉得实属麻烦,每次需要打开、过滤、清除、关闭。在这里强烈推…

linux command

1、文件管理 $ cat cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。 使用权限 所有使用者 语法格式 cat [-AbeEnstTuv] [--help] [--version] fileName参数说明 -n | [--number]:由1开始对所有输出的行数编号 -b | [--number-nonblank]:和-n相似,只不…

某赛通电子文档安全管理系统 多处 SQL注入漏洞复现

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能…

Baidu comate智能编程助手评测

Baidu comate智能编程助手评测 作者:知孤云出岫 目录 一. 关于comate产品 二. 关于comate产品体验 三. 关于实际案例. 四. 关于baidu comate编程助手的实测体验感悟 五. …

基于Springboot的点餐平台

基于SpringbootVue的点餐平台的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页展示 菜品信息 菜品资讯 购物车 后台登录 用户管理 菜品分类管理 菜品信息管理 …

01数学建模 -线性规划

1.1线性规划–介绍 翻译翻译什么叫惊喜 1.2线性规划–原理 拉格朗日乘数法手算 最值化 f ( x , y ) , s . t . g ( x , y ) c , 引入参数 λ ,有: F ( x , y , λ ) f ( x , y ) λ ( g ( x , y ) − c ) 再将其分别对 x , y , λ 求导&#xff0c…

贝叶斯推理导论:如何在‘任何试验之前绝对一无所知’的情况下计算概率

从左至右依次为托马斯贝叶斯、皮埃尔-西蒙拉普拉斯和哈罗德杰弗里斯——逆概率(即现在所说的客观贝叶斯分析)发展中的关键人物。[24]https://avoid.overfit.cn/post/8c7a66d96347413db8925c5d02e5ecf0

Vue3框架

Vue3框架 一.使用create-vue搭建Vue3项目二.组合式API - setup选项1.setup选项的写法和执行时机2.setup中写代码的特点3. script setup 语法糖 三.组合式API - reactive和ref函数1. reactive2. ref3. reactive 对比 ref 四.组合式API - computed五.组合式API - watch1. 侦听单个…

go学习02

get和post混合取参数ginServer.POST("/post", func(c *gin.Context) {id := c.Query("id")page := c.DefaultQuery("page", "0")name := c.PostForm("name")message := c.PostForm("message")fmt.Printf("id…

软中断调度时机

软中断处理流程 目录软中断处理流程软中断处理的时机中断退出时软中断调度机制 软中断处理的时机中断退出时(中断上下文) 软中断线程处理中断退出时软中断调度机制判断是否属于中断上下文以及是否有软中断处与pending状态 判断软中断线程是否处于runing状态(4.9内核引入) 进…

【数据结构】stack queue —— 栈和队列

前言 这阵子一直在学数据结构,知识点消化地有点慢导致博客一直没写,现在总算是有时间歇下来补补前面落下的博客了。从现在起恢复周更,努努力一周两篇也不是梦……闲话少说,今天就让我们一起来认识栈和队列 1. 栈的介绍和使用 栈…

sub-1G低功耗soc芯片DP32RF002

DP32RF002 是深圳市动能世纪科技有限公司研制的基于 ARM Cortex-M0+内核的超低功耗、高性能的、单片集成 (G)FSK/OOK 无线收发机的 32 位 SoC 芯片。工作于 200 ~960MHz 范围内,支持灵活可设的数据包格式,支持自动应答和自动重发功能,支持跳频操作,支持 FEC 功能,同时内部…

unity3d使用3D WebView播放网页中的视频

Unity2021.3.35f1,硬件ESP32-Cam,3D WebView插件 1.新建工程,导入3D WebView for Winfows和3D WebView for Android 2.打开场景Assets\Vuplex\WebView\Demos\Scenes\2_CanvasWebViewDemo 3.修改Canvas的Render Mode为Screen Space-Camera&am…

xss漏洞学习

1.xss漏洞简介 跨站脚本(Cross-Site Scripting),本应该缩写为CSS,但是该缩写已被层叠样式脚本Cascading Style Sheets所用,所以改简称为XSS。也称跨站脚本或跨站脚本攻击。 原理:跨站脚本攻击XSS通过将恶…

BOSHIDA AC/DC电源模块的电磁兼容性分析与方案设计

BOSHIDA AC/DC电源模块的电磁兼容性分析与方案设计 BOSHIDA AC/DC电源模块是一种将交流电转换为直流电的电源模块,常用于各种电子设备中。然而,由于电磁干扰可能会对设备的正常运行造成影响,因此需要对AC/DC电源模块的电磁兼容性进行分析和方案设计。 首先,我们需要对AC/D…