文章目录

  • 理解
  • 计算方法
    • 手算
    • Matlab算
  • 应用
  • 参考
    • 英文表述

理解

当我们在看一个运动的时候,我们是如何看的呢?是不是看这个运动的速度方向;或者就像物理中的合力,我们会拆分成多个分力来简化。于是理所当然的会思考,矩阵是否也能像这样拆分呢?

1、存在性

我们不得不先说说矩阵的乘法,矩阵乘法本质是一种变换,是把一个向量,通过旋转,拉伸,变成另一个向量的过程

举一个例子:给定一个向量(11)\left(\begin{array}{l}{1} \\ {1} \end{array}\right)(11​) 和任意一个矩阵A(2132)\left(\begin{array}{cc}{2} & {1}\\ {3} & {2} \end{array}\right)(23​12​) 他们相乘会得到一个新的向量
(2132)(11)=(35)\left(\begin{array}{cc}{2} & {1}\\ {3} & {2} \end{array}\right) \left(\begin{array}{l}{1} \\ {1} \end{array}\right) =\left(\begin{array}{l}{3} \\ {5} \end{array}\right)(23​12​)(11​)=(35​)


通过上面左图可以很清楚的看到了这样一个变换的过程,因为矩阵A是随机给出的,这也意味着,我们可以随意变换原来的向量,上面右图这样的情况是否也可能出现呢?当然会出现,我们用一个公式来表示描述右图的变换:
Av=λv(1)Av=\lambda v \tag{1}Av=λv(1) 描述的是矩阵 AAA 对向量 vvv 的变换效果只有拉伸,没有旋转。

也可以看成 矩阵 AAA,向量 vvv,系数 λ\lambdaλ 这三者建立了一种联系,但显然我们无法通过式 (1)来用 vvv 和 λ\lambdaλ 表示 AAA ,因为这个式子不是完备的,对于一个秩为 mmm 的矩阵AAA,应该存在 mmm 个这样的式子,完备式子应该是:

A(v⃗1,v⃗2,…,v⃗m)=(λ1v⃗1,λ2v⃗2,…,λmv⃗m)=(v⃗1,v⃗2,…,v⃗m)[λ1⋯0⋮⋱⋮0⋯λm](2)A\left(\vec{v}_{1}, \vec{v}_{2}, \ldots, \vec{v}_{m}\right)= \left(\lambda_{1} \vec{v}_{1}, \lambda_{2} \vec{v}_{2}, \ldots, \lambda_{m} \vec{v}_{m}\right)= \left(\vec{v}_{1}, \vec{v}_{2}, \ldots, \vec{v}_{m}\right)\left[\begin{array}{ccc}{\lambda_{1}} & {\cdots} & {0} \\ {\vdots} & {\ddots} & {\vdots} \\ {0} & {\cdots} & {\lambda_{m}}\end{array}\right] \tag{2}A(v1​,v2​,…,vm​)=(λ1​v1​,λ2​v2​,…,λm​vm​)=(v1​,v2​,…,vm​)⎣⎢⎡​λ1​⋮0​⋯⋱⋯​0⋮λm​​⎦⎥⎤​(2)

AV=VΛ(3)A V=V\Lambda \tag{3}AV=VΛ(3)

通过式(3),我们就可以表示 AAA了:
A=VΛV−1(4)A = V \Lambda V^{-1} \tag{4}A=VΛV−1(4)

这种形式是不是就可以看成矩阵 AAA 被分解了。

这样我们就得到了一个与运动类似的划分:

  • λ\lambdaλ 就是运动的速度
  • vvv 就是运动的方向

2、合理性

证明了存在性,那我们为什么要引入这样一种矩阵和向量的表述形式呢?科学家还将满足这样形式的向量 vvv 命名为矩阵 AAA 的特征向量,系数 λ\lambdaλ 命名为矩阵 AAA 的特征值。下面我们就要来探讨这个问题

特征值和特征向量是为了研究向量在经过线性变换后的方向不变性而提出的

一个矩阵和该矩阵的非特征向量相乘是对该向量的旋转变换;一个矩阵和该矩阵的特征向量相乘是对该向量的伸缩变换,其中伸缩程度取决于特征值大小

矩阵在特征向量所指的方向上具有 增强(或减弱)特征向量 的作用。这也就是说,如果矩阵持续地叠代作用于向量,那么特征向量的就会突显出来,我们用Matlab进行计算:

(在这里用到的实例是与后面计算例子一致,可以先到后面看结果)
我们反复用矩阵A=(411121323)A=\left(\begin{array}{ccc}{4} & {1} & {1} \\ {1} & {2} & {1} \\ {3} & {2} & {3}\end{array}\right)A=⎝⎛​413​122​113​⎠⎞​ 去乘一个任意向量 v=(−153)v= \left(\begin{array}{c}{-1} \\ {5} \\ {3}\end{array}\right)v=⎝⎛​−153​⎠⎞​

可以看到不断左乘A后,变换后的归一化向量会恒等为(0.3,0.2,0.4),这与我们计算出来的最大特征值对应的特征向量归一化后的结果是一致的,这也就佐证了矩阵是具有某种不变的特性的。因此为了提取矩阵这种“不变性”,或者说是为了描述变换(矩阵乘法是一种线性变换)的主要方向是非常有必要的,具体应用会在后面讲到。

这里补充一个理论(来自尹相楠):

假设矩阵A是一个 n×nn×nn×n 的满秩矩阵,他的单位特征向量为 v1,v2,…,vnv_1, v_2, \dots, v_nv1​,v2​,…,vn​, 对应的特征值为 λ1,λ2,…,λn\lambda_1, \lambda_2, \dots, \lambda_nλ1​,λ2​,…,λn​ 。那么对一个任意向量 x=x1v1+x2v2+⋯+xnvnx=x_1v_1 + x_2v_2+\dots+x_nv_nx=x1​v1​+x2​v2​+⋯+xn​vn​ ,有:

Ax=A(x1⋅ν1+x2⋅ν2+…+xn⋅νn)=x1(Aν1)+x2(Aν2)+…+xn(Aνn)=x1(λ1ν1)+x2(λ2ν2)+…+xn(λnνn)\begin{aligned} A x &=A\left(x_{1} \cdot \nu_{1}+x_{2} \cdot \nu_{2}+\ldots+x_{n} \cdot \nu_{n}\right) \\ &=x_{1}\left(A \nu_{1}\right)+x_{2}\left(A \nu_{2}\right)+\ldots+x_{n}\left(A \nu_{n}\right) \\ &=x_{1}\left(\lambda_{1} \nu_{1}\right)+x_{2}\left(\lambda_{2} \nu_{2}\right)+\ldots+x_{n}\left(\lambda_{n} \nu_{n}\right) \end{aligned} Ax​=A(x1​⋅ν1​+x2​⋅ν2​+…+xn​⋅νn​)=x1​(Aν1​)+x2​(Aν2​)+…+xn​(Aνn​)=x1​(λ1​ν1​)+x2​(λ2​ν2​)+…+xn​(λn​νn​)​

经过k次迭代后:

Akx=x1(λ1kν1)+x2(λ2kν2)+…+xn(λnkνn)=λ1k[x1ν1+x2(λ2λ1)kν2+…+xn(λnλ1)kνn]\begin{aligned} A^{k} x &=x_{1}\left(\lambda_{1}^{k} \nu_{1}\right)+x_{2}\left(\lambda_{2}^{k} \nu_{2}\right)+\ldots+x_{n}\left(\lambda_{n}^{k} \nu_{n}\right) \\ &=\lambda_{1}^{k}\left[x_{1} \nu_{1}+x_{2}\left(\frac{\lambda_{2}}{\lambda_{1}}\right)^{k} \nu_{2}+\ldots+x_{n}\left(\frac{\lambda_{n}}{\lambda_{1}}\right)^{k} \nu_{n}\right] \end{aligned} Akx​=x1​(λ1k​ν1​)+x2​(λ2k​ν2​)+…+xn​(λnk​νn​)=λ1k​[x1​ν1​+x2​(λ1​λ2​​)kν2​+…+xn​(λ1​λn​​)kνn​]​

由于 λ1>λ2>…>λn\lambda_{1}>\lambda_{2}>\ldots>\lambda_{n}λ1​>λ2​>…>λn​ (不考虑两个特征值相等的情况,因为太少见了)。所以经过k次迭代后,lim⁡k→+∞(λi/λ1)k=0(i≠1)\lim _{k \rightarrow+\infty}\left(\lambda_{i} / \lambda_{1}\right)^{k}=0(i \neq 1)limk→+∞​(λi​/λ1​)k=0(i​=1)。所以:

lim⁡k→+∞Akx=λ1kx1ν1\lim _{k \rightarrow+\infty} A^{k} x=\lambda_{1}^{k} x_{1} \nu_{1} k→+∞lim​Akx=λ1k​x1​ν1​

也就是说,经过 k 次迭代后,我们将得到矩阵主特征向量的线性放缩,只要把这个向量归一化,就得到了该矩阵的单位主特征向量,进而可以解出矩阵的主特征值。

计算方法

在 (1) 式的基础上,我们进行一些变形 :
Av=λv→Av=λIv→(λI−A)v=0Av=\lambda v \rightarrow Av = \lambda I v \rightarrow (\lambda I - A)v = 0Av=λv→Av=λIv→(λI−A)v=0 根据线性方程组理论,为了使这个方程有非零解,矩阵 (λI−A)(\lambda I - A)(λI−A) 的行列式必须是零,
det(λI−A)=0det(\lambda I - A)=0det(λI−A)=0 上式也被称为是 AAA 的特征方程,计算出所有λ\lambdaλ的取值后,再代入 (λI−A)v=0(\lambda I - A)v = 0(λI−A)v=0 求解对应的 vvv

注意:要注意特征值是重根时的情况。。。。

手算

通过一个例子来动手计算一遍

求矩阵A=(411121323)A=\left(\begin{array}{ccc}{4} & {1} & {1} \\ {1} & {2} & {1} \\ {3} & {2} & {3}\end{array}\right)A=⎝⎛​413​122​113​⎠⎞​的特征值和特征向量:
∣λI−A∣=∣λ−4−1−1−1λ−2−1−3−2λ−3∣=(λ−6)(λ−2)(λ−1)|\lambda I - A| = \left|\begin{array}{ccc}{\lambda - 4} & {-1} & {-1} \\ {-1} & {\lambda - 2} & {-1} \\ {-3} & {-2} & {\lambda - 3}\end{array}\right| = (\lambda - 6)(\lambda - 2)(\lambda - 1)∣λI−A∣=∣∣∣∣∣∣​λ−4−1−3​−1λ−2−2​−1−1λ−3​∣∣∣∣∣∣​=(λ−6)(λ−2)(λ−1)
所以λ1=6,λ2=2,λ3=1所以 \lambda_1 = 6 , \lambda_2 = 2, \lambda_3 = 1所以λ1​=6,λ2​=2,λ3​=1
1.当λ=6时,(λI−A)v=(6I−A)v=01.当\lambda=6时,(\lambda I - A)v = (6 I - A)v = 01.当λ=6时,(λI−A)v=(6I−A)v=0
(2−1−1−14−1−3−23)(v1v2v3)=0\left(\begin{array}{ccc}{2} & {-1} & {-1} \\ {-1} & {4} & {-1} \\ {-3} & {-2} & {3}\end{array}\right)\left(\begin{array}{l}{v_{1}} \\ {v_{2}} \\ {v_{3}}\end{array}\right) =0 ⎝⎛​2−1−3​−14−2​−1−13​⎠⎞​⎝⎛​v1​v2​v3​​⎠⎞​=0
{2v1−v2−v3=0−v1+4v2−v3=0−3v1−2v2+3v3=0\left\{\begin{array}{l} {2v_1-v_2-v_3 = 0} \\ {-v_1+4v_2-v_3 = 0} \\ {-3v_1-2v_2+3v_3 = 0} \end{array}\right. ⎩⎨⎧​2v1​−v2​−v3​=0−v1​+4v2​−v3​=0−3v1​−2v2​+3v3​=0​
通过给其中一个变量赋值(通常是1),得到一个基础解系⇒{v1=5v2=3v3=7通过给其中一个变量赋值(通常是1),得到一个基础解系 \Rightarrow \left\{\begin{array}{l} {v_1 = 5} \\ {v_2 = 3} \\ {v_3 = 7} \end{array}\right.通过给其中一个变量赋值(通常是1),得到一个基础解系⇒⎩⎨⎧​v1​=5v2​=3v3​=7​
同理得到当λ=2时,{v1=1v2=−1v3=−1当λ=1时,{v1=0v2=1v3=−1同理得到当\lambda=2时, \left\{\begin{array}{l} {v_1 = 1} \\ {v_2 = -1} \\ {v_3 = -1} \end{array}\right. 当\lambda=1时, \left\{\begin{array}{l} {v_1 = 0} \\ {v_2 = 1} \\ {v_3 = -1} \end{array}\right.同理得到当λ=2时,⎩⎨⎧​v1​=1v2​=−1v3​=−1​当λ=1时,⎩⎨⎧​v1​=0v2​=1v3​=−1​

Matlab算

我们还可以利用Matlab中的 eig() 函数来帮我们求解:

  • e = eig(A) 返回一个列向量,其中包含方阵 A 的特征值
  • [V,D] = eig(A) 返回特征值的对角矩阵 D 和矩阵 V,其列是对应的右特征向量,使得 AV = VD
A = [4 1 1;1 2 1;3 2 3];
[V,D] = eig(A)


*发现Matlab计算的和手算的特征向量值不同,但比例是一样的,这是因为特征向量不是唯一的,特征向量来自齐次线性方程组的解,是齐次线性方程组的基础解系的非零线性组合。

应用

1、在图像压缩里,一张图片就可以看作是一个矩阵,当我们提取了这个矩阵的特征值和特征向量后,我们可以只用最大的几个特征值(其他的变为0)就可以基本复原这张图片。

参考

英文表述

特征分解:Eigendecomposition
特征向量:eigenvector

【理解】特征值分解,理解+计算方法+代码+应用相关推荐

  1. 机器学习—数据压缩(PCA)—特征值分解、奇异值分解+代码理解

    一.特征值 协方差:协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同. 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之 ...

  2. 随机向量x的协方差阵_【科普】如何正确理解特征值与特征向量

    Greeting! 特征值与特征向量是大学线性代数与统计学课程里的内容,当年强背了过去,并没有真正理解过这个问题.为了以后学习统计学习方法更方便,在此记录下学习文章以加深理解.(个人观点,如有错漏请提 ...

  3. 【控制】拉普拉斯拉氏变换原理分解理解

    扩展链接: [控制]Z变换及其原理讲解 [Matlab 控制] 拉氏变换和Z变换 拉氏变换原理分解理解 拉氏变换原理分解理解 1. 拉普拉斯变换 2. 拉普拉斯逆变换 (1)反演公式 (2)查表法(分 ...

  4. 复数特征值求特征向量_如何理解特征值的意义?

    毕业多年,曾经有同事问我该如何理解特征值的意义? 当时,实在羞愧,我一学数学的,真不知该如何回答. 极力回想,也只能以"特征值的求法.步骤...bla...bla..."应付了事, ...

  5. 彻底理解cookie,session,localStorage(附代码)

    2019独角兽企业重金招聘Python工程师标准>>> 1. cookie 1.1 什么是cookie cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某 ...

  6. 【数学和算法】如何理解特征值为复数的情况

    如何理解特征值为复数的情况? 此"旋转"非彼"旋转".可建立下面的复空间维度矩阵(n行2列)以做解释: 行:第i行代表复空间的第i维. 列:由于复空间的一维实际 ...

  7. 处理大并发之一 对epoll的理解,epoll客户端服务端代码

    http://blog.csdn.net/zhuxiaoping54532/article/details/56494313 处理大并发之一 对epoll的理解,epoll客户端服务端代码 序言: 该 ...

  8. [css] 圣杯布局和双飞翼布局的理解和区别,并用代码实现

    [css] 圣杯布局和双飞翼布局的理解和区别,并用代码实现 一: section{height: 100%; overflow: hidden;clear:both; } .left{ height: ...

  9. VLM:Meta AI CMU提出任务无关视频语言模型视频理解预训练VLM,代码已开源!(ACL 2021)...

    关注公众号,发现CV技术之美 本文分享 ACL 2021 论文『VLM: Task-agnostic Video-Language Model Pre-training for Video Under ...

  10. SVD分解的推导,理解SVD分解及矩阵奇异值的几何意义

    文章目录 SVD分解的证明推导 从本质上理解SVD分解 矩阵奇异值的几何意义 SVD分解的证明推导 理解SVD分解要解决的问题是什么? 从本质上理解SVD分解 从线性映射的矩阵表示角度,即从" ...

最新文章

  1. 【bzoj3924】[Zjoi2015]幻想乡战略游戏 动态点分治
  2. Windows中几个内存相当的指标
  3. 处理WCF异常的方式
  4. Nuxt爬坑系列之vuex
  5. 【Win32汇编】MOVS,STOS,REP 指令
  6. ALV中下拉列表列的实现
  7. KMP算法详解及各种应用
  8. HDU - 4612 Warm up(边双缩点+树的直径)
  9. 【NOI2014】起床困难综合症 贪心
  10. DDD 领域驱动设计落地实践:六步拆解 DDD
  11. python编写时钟代码_python Tkinter 编写时钟
  12. Android 系统(82)---ART 和 Dalvik
  13. windows server2008服务器文件上传受限制怎么办,windows server 2008 服务器上传限制
  14. CentOS 7 samba 配置
  15. SpringMVC中的返回值问题之三返回list类型和map类型
  16. 【有奖投票】程序员IT好书评选
  17. 安卓仿苹果音量调节_安卓不仿苹果静音键?千万别小瞧“静音键”, 功能强悍到无敌!...
  18. mysql7.6安装_CentOS7.6离线安装MySql5.7
  19. 大数据小项目之电视收视率企业项目12
  20. 深圳大厂程序员自述:我37岁,年薪百万,等着被公司干掉!

热门文章

  1. 计算机专业自主招生有哪些学校,自主招生的学校类型有哪些
  2. 计算机开机报一长两短,电脑开机发出一长两短报警声启动不了怎么办
  3. 安防领域名词explain
  4. 中软国际软件测试培训中心,中软国际准员工培养计划C++开发/软件测试方向开班典礼...
  5. Kubernetes 管理员认证(CKA)考试笔记(二)
  6. android前置摄像头预览,Android - 前置摄像头预览SurfaceView
  7. wincap4.11在vc6下编译出现_W64错误
  8. js中undefined
  9. 读书笔记(平凡的世界)
  10. ubuntu16.04/20.04 xfce4以及windows下面使用护眼软件redshift