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

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

 (截图来自于我用Jupyter notebook所生成的代码)

最后我们给出一个矩阵对角化的例子作为这部分的小结,假设方阵矩阵A为:

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

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

        为了方便,我把后面那个特征向量改成[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}


 (全文完) 

--- 作者,松下J27

参考文献(鸣谢):

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

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

(配图与本文无关) 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware 15 安装centos7虚拟机

1. 安装前准备 1.1 下载centos 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 下载需要版本的centos版本 直达链接 centos7.9 : centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云 .基础使用的话安装选择这个就行了,大概下载几分钟 2. …

linux负载均衡 和 系统负载分析笔记

1 负载均衡 1.1 计算负载 1.1.1 PELT算法简介 从Linux3.8内核以后进程的负载计算不仅考虑权重,⽽且跟踪每个调度实体的历史负载情况,该算法称为PELT(Per-entity Load Tracking) 《奔跑吧Linux内核》卷1:基础架构;P505 相关资料…

银河麒麟V10 SP1服务器客户端定时数据同步

银河麒麟V10 SP1服务器客户端定时数据同步 0.概述 当前只测试了将数据从客户端往服务端推送,两个客户端分别推送不同的数据 1.环境 三台电脑均为银河麒麟V10SP1桌面操作系统 服务器IP:192.168.1.51 用户名:wlh 客户端IP:192…

OpenStack云计算(十一)——OpenStack网络管理,验证OpenStack网络资源模型,验证来巩固和加深对OpenStack网络资源模型的理解

项目实训一 【实训题目】 验证OpenStack网络资源模型 【实训目的】 通过验证来巩固和加深对OpenStack网络资源模型的理解。 【实训准备】 (1)复习Neutron网络资源模型。 (2)重点理解网络、子网、端口和路由器的概念。 【实…

用 LM Studio 1 分钟搭建可在本地运行大型语言模型平台替代 ChatGPT

📌 简介 LM Studio是一个允许用户在本地离线运行大型语言模型(LLMs)的平台,它提供了一种便捷的方式来使用和测试这些先进的机器学习模型,而无需依赖于互联网连接。以下是LM Studio的一些关键特性: 脱机&am…

【笔记django】创建一个app

创建app 错误 raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Cannot import rules. Check that dvadmin.rules.apps.RulesConfig.name is correct.原因 刚创建的rules的app被手动移动到了dvadmin目录下 而dvadmin/rules/apps.py的内容还是&…

kubeadmin搭建自建k8s集群

一、安装要求 在开始之前,部署Kubernetes集群的虚拟机需要满足以下几个条件: 操作系统 CentOS7.x-86_x64硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多【注意master需要两核】可以访问外网,需要…

万界星空科技电机行业MES+商业电机行业开源MES+项目合作

要得出mes系统解决方案在机电行业的应用范围,我们先来看一下传统机电行业的管理难题: 1、 产品标准化程度较低,制造工艺复杂,生产周期较长,产品质量不稳定; 2、 自动化程度低,大多数工序以手工…

【linux】匿名管道|进程池

1.进程为什么要通信? 进程也是需要某种协同的,所以如何协同的前提条件(通信) 通信数据的类别: 1.通知就绪的 2.单纯的数据 3.控制相关的信息 2.进程如何通信? 进程间通信,成本会高一点 进程间通信的前提,先…

2024年最新 Windows\Linux 后台运行程序注解

一、前言 有时候需要在后台运行程序,查了查网上现有的程序有些运行不了,跑通了之后简单记录一下,为后面的同学躺一下雷 1、Linux 系统 Linux后台运行进程时,通常使用如下方法: (1)程序挂后台…

算法练习(2)——约瑟夫环和坐标公式的推导

看一下上面的牛客题。题目的意思是n个小朋友围成一个圆环,编号从0开始,数m个数时,让小朋友出列,然后出列小朋友的下一个位置为0,继续数m个数,然后小朋友出来,直到最后一个小朋友,然后…

SVN小乌龟汉化问题

1.首先确认中文语言包和SVN版本需要一致(点击右键 选择最后一个选项即可查看) 官网链接 点击这个官网链接可以下载对应版本的中文包 2.下载好之后直接无脑下一步安装即可 3.如果还是没有中文,找到这个文件夹,把里面的内容全部删…

图解《图搜索算法》及代码实现

关注我,持续分享逻辑思维&管理思维; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导; 有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自…

GPT与GAN结合生成图像——VQGAN原理解析

1、前言 这篇文章,我们讲VQ_GAN,这是一个将特征向量离散化的模型,其效果相当不错,搭配Transformer(GPT)或者CLIP使用,达到的效果在当时可谓是令人拍案叫绝! 原论文:Tam…

【视频异常检测】Open-Vocabulary Video Anomaly Detection 论文阅读

Open-Vocabulary Video Anomaly Detection 论文阅读 AbstractMethod3.1. Overall Framework3.2. Temporal Adapter Module3.3. Semantic Knowledge Injection Module3.4. Novel Anomaly Synthesis Module3.5. Objective Functions3.5.1 Training stage without pseudo anomaly …

网盘——查看文件

本文主要讲解文件操作过程中,查看文件如何实现,实现步骤如下: 1、实现步骤: A、首先客户端发送查看请求(包含目录信息) B、服务器将文件名字还有文件的类型发送给客户端(只发送文件的名字&am…

Linux2.6内核进程调度队列

目录 运行队列runqueue 活跃队列&过期队列 queue[140]&优先级&队列数组下标 bitmap[5]&O(1)调度算法 nr_active active指针和expired指针 O(1)调度算法之调度过程 本篇是Linux进程概念篇的最后一篇,Linux2.6内核是一个具体的/可行的/实际的存…

【Node.js】03 —— HTTP 模块探索

🌟Node.js之HTTP模块探索✨ 🌟引言 在网络编程中,HTTP协议无处不在。在Node.js的世界里,我们可以通过内置的http模块来轻松创建HTTP服务器和客户端,实现数据的接收和发送。今天就让我们一起打开这扇门,探索…

Fisher判别示例:鸢尾花(iris)数据(R)

先读取iris数据,再用程序包MASS(记得要在使用MASS前下载好该程序包)中的线性函数lda()作判别分析: data(iris) #读入数据 iris #展示数据 attach(iris) #用变量名绑定对应数据 library(MASS) #加载MASS程序包 ldlda(Species~…

Python打怪升级(4)

在计算机领域常常有说"合法"和"非法"指的是:是否合理,是否有效,并不是指触犯了法律。 random.randint(begin,end) 详细讲解一下这个random是指模板,也就是别人写好的代码直接来用,在Python当中,…