特征值和特征向量的理解

article/2025/10/15 8:43:29

在线性代数的最后,我们都会学矩阵的特征值分解,我们知道一个方阵A经过特征值分解后就得到特征向量和特征值了。那么,这个所谓的特征值和特征向量到底是什么东西呢?

我们一上来就会学到这样的一个公式:

Ax = λx,其中x是一个向量

这个式子是如此的简单粗暴,以致于从这个公式来看,给向量x乘上一个矩阵A,只是相当于给这个向量乘上了一个系数λ。偌大一个矩阵A对向量x的作用竟然本质上不过只是和一个小小的数字λ相同而已!!!

所以这个矩阵分解方法到底具有什么样的意义?

首先给出概念上的一种解释。所谓的特征值和特征向量,最重要的是理解“特征”这两个字,特征向量翻译为eigen vector, eigen这个单词来自德语,本义是在“本身固有的,本质的”。纯数学的定义下,并不能很明白地理解到底为什么叫做特征值和特征向量。但是举一个应用例子,可能就容易理解多了。

在图像处理中,有一种方法就是特征值分解。我们都知道图像其实就是一个像素值组成的矩阵,假设有一个100x100的图像,对这个图像矩阵做特征值分解,其实是在提取这个图像中的特征,这些提取出来的特征是一个个的向量,即对应着特征向量。而这些特征在图像中到底有多重要,这个重要性则通过特征值来表示。比如这个100x100的图像矩阵A分解之后,会得到一个100x100的特征向量组成的矩阵Q,以及一个100x100的只有对角线上的元素不为0的矩阵E,这个矩阵E对角线上的元素就是特征值,而且还是按照从大到小排列的(取模,对于单个数来说,其实就是取绝对值),也就是说这个图像A提取出来了100个特征,这100个特征的重要性由100个数字来表示,这100个数字存放在对角矩阵E中。在实际中我们发现,提取出来的这100个特征从他们的特征值大小来看,大部分只有前20(这个20不一定,有的是10,有的是30或者更多)个特征对应的特征值很大,后面的就都是接近0了,也就是说后面的那些特征对图像的贡献几乎可以忽略不计。我们知道,图像矩阵A特征值分解后可以得到矩阵Q和矩阵E:

 


那么反推出去,把右边的三个矩阵相乘肯定也能得到矩阵A。既然已经知道了矩阵E中只有前20个特征值比较重要,那么我们不妨试试把E中除了前20个后面的都置为0,即只取图像的前20个主要特征来恢复图像,剩下的全部舍弃,看看此时会发生什么:

原图:【注意:特征值分解要求必须是nxn的方阵,如果不是行列相等的方阵,请使用奇异值分解】

只取前10个特征值:

只取前20个特征值:

只取前50个特征值:

只取前100个特征值:

我们可以看到,在只取前20个特征值和特征向量对图像进行恢复的时候,基本上已经可以看到图像的大体轮廓了,而取到前50的时候,几乎已经和原图像无异了。明白了吧,这就是所谓的矩阵的特征向量和特征值的作用。

我们再来从数学定义上尝试去理解。对应一个给定的矩阵A,如果有一个向量v,使得矩阵A作用于v之后(即A和v相乘),得到的新向量和v仍然保持在同一直线上,像下面这样:

Ax = λx

那么就称向量v是矩阵A的一个特征向量,而λ就是特征向量v对应的特征值【一个特征向量一定对应有一个特征值】。

注意这个定义中的要点,我们都知道矩阵其实就是一个线性变换,向量v在经过矩阵A这个线性变换之后,新向量和原来的向量v仍然保持在同一直线上,也就是说这个变换只是把向量v的长度进行了改变而保持方向不变(在特征值是负数的情况下,新向量的方向是原来方向的反向,即180°反方向)。

为了理解这个概念,我们再看维基百科上关于特征向量给出的一个《蒙娜丽莎》的例子:


当蒙娜丽莎的图像左右翻转时,中间垂直的红色向量方向保持不变。而水平方向上黄色的向量的方向完全反转,因此它们都是左右翻转变换的特征向量。红色向量长度不变,其特征值为1。黄色向量长度也不变但方向变了,其特征值为-1。橙色向量在翻转后和原来的向量不在同一条直线上,因此不是特征向量。

所以归根结底,特征向量其实反应的是矩阵A本身固有的一些特征,本来一个矩阵就是一个线性变换,当把这个矩阵作用于一个向量的时候,通常情况绝大部分向量都会被这个矩阵A变换得“面目全非”,但是偏偏刚好存在这么一些向量,被矩阵A变换之后居然还能保持原来的样子,于是这些向量就可以作为矩阵的核心代表了。于是我们可以说:一个变换(即一个矩阵)可以由其特征值和特征向量完全表述,这是因为从数学上看,这个矩阵所有的特征向量组成了这个向量空间的一组基底。而矩阵作为变换的本质其实不就把一个基底下的东西变换到另一个基底表示的空间中么?
另外还有一篇更加学术性的讲解,一起分享给大家https://www.zhihu.com/question/21874816


http://chatgpt.dhexx.cn/article/27Owwl3S.shtml

相关文章

MATLAB之特征值和特征向量

1.定义: 设A是n阶矩阵,如果数λ和n维非零向量x使关系式 (1) 成立,那么,这样的数λ称为矩阵A的特征值,非零向量x称为A的对应于特征值λ的特征向量(1)式还可以写为: (2&…

特征值和特征向量的作用

本文转自知乎大牛。 从定义出发,Axcx:A为矩阵,c为特征值,x为特征向量。 矩阵A乘以x表示,对向量x进行一次转换(旋转或拉伸)(是一种线性转换),而该转换的效果为…

线性代数学习之特征值与特征向量

什么是特征值和特征向量: 在上一次线性代数学习之行列式学习了行列式相关的一些概念,其中也多次提到学好行列式是为了学习“特征值和特征向量”的基础,所以此次就正式进入这块内容的学习,也是线性代数中非常重要的概念&#xff0…

线性代数之特征值与特征向量的求法

线性代数之特征值与特征向量的求法 特征值与特征向量 已知如下矩阵A,求解其特征值和特征向量。 首先构造特征方程 det(λE-A) 情况一: 特征值 -2时解方程组(-2E-A)X0,即得: 于是得同解方程组 - 0,解为 - (这里 , 为自由未知…

cfree 上面工具栏消失解决办法(不用重下!!!!!)

在上框空白处鼠标右键自定义; 新建随便命个名; 左上角就是新建的工具栏;然后还是附件打开命令把你想用的快捷方式拖到新建的工具栏就可以了 暂时用着没有啥问题。

cfree编译报错[Error] g++.exe: 5\mingw\lib\: No such file or directory

心血来潮拾起算法想到了c/c,然后安装了cfree,但是在编译程序的时候报错,大致如下 [Error] g.exe: 5\mingw\lib\: No such file or directory [Error] g.exe: 5\mingw\mingw32\lib\: No such file or directory [Error] g.exe: 5\mingw\bin\:…

解决Cfree [Error] g++.exe: 5\mingw\lib\: No such file or directory

昨天笔者复习数据结构想编写代码,突然发现自己的Cfree显示如图所示错误 看到这耀眼的红色,想必是程序员的都不能忍,于是经过苦苦找寻,终于发现了其中的奥妙,那就是把你安装的文件夹名字 C-free 5改为C-free5即不要之间…

Cfree之万能头函数bits\stdc++.h的添加和注意事项

实现步骤 一、创建一个.txt文件,把下面的代码复制进去 // C includes used for precompiling -*- C -*-// Copyright (C) 2003-2015 Free Software Foundation, Inc. // // This file is part of the GNU ISO C Library. This library is free // software; you …

cfree mysql_如何配置CFree才能开发MySql数据库应用

环境: IDE:CFree5.0 操作系统:Windows XP Prefessional sp3 数据库版本:MySQL-5.0.22-community-nt 连接器版本:mysql-connector-c-noinstall-6.0.2-win32 编译器:GCC for windows 4.5.0 2。将Mysql开发包的…

c语言为什么不能自动free,求大神帮忙看看 为什么cfree没有报错但是就是运行不了...

求大神帮忙看看 为什么cfree没有报错但是就是运行不了 #include #include #include #define Insert 1 //增加订单 #define Query 2 //查找订单 #define Update 3 //修改订单 #define Delete 4 //删除订单 #define List 5 //列出所有订单 #define Quit 0 //退出系统 FILE *…

关于CFree5.0中设置支持C99模式

关于C-Free5.0中设置支持C99模式,分为以下几个步骤: 1.打开C-Free5.0,在左上角找到‘构建(B)’ 2.展开‘构建(B)’,点击最下方的‘构建选项’ 3.在‘编译’一栏看到红色框区域&am…

C-Free 5 加 TDM-GCC编辑器搭建C/C++开发环境

本文所需要的安装程序下载地址:https://download.csdn.net/download/fangfang635344731/10705407 1.安装C-Free 5,这一步重点是安装路径绝对不能有空格!!!我的安装路径为“C:\C-Free5”。 2.安装TDM-GCC,…

C语言基础入门:C-Free5设置支持C99标准

问题: 在使用C-Free 5.0调试程序时,编译提示不支持C99模式,错误! 具体问题如下图所示: 解决方法1:对已创建工程的设置,仅对该工程有效。 右键点击“文件列表窗口”中的工程 从上到下&#x…

Cfree-5各种抽风解决办法

最近好像笔记本单步调试用不了,本想去Cfree吧求助,没想到首页就有个和我问题一毛一样的,还有大神在楼下给出了解答,好开森!赶紧记录(chaoxi)到这啦,免得以后抽风。 我这里是最近变成…

cfree5文件标签混乱处理。

有时cfree5并不听话,文件列表标签会乱显示,非常影响心情: 如上面红线内部分,怎么也处理不了。 以前用cfree4安装后再安装5可以处理,但最近处理不了。琢磨了一下,发现原来解决办法很简单: 一、对…

cfree5更新C++11特性

昨天在调试程序的时候,发现有些最新的函数Cfree并不支持,因为最新出来的C11特性不满足。C11标准较之前的版本在性能上有很大改变,具体请查阅百度或谷歌,谷歌现在进不去了,那就翻墙吧。 好了,首先我们还是如…

Cfree5可以JAVA_C语言中free函数的使用详解

free函数是我们再写C语言程序时常用的函数,但是使用时需要注意,一不小心很肯能会引起吐核。 注意:free函数与malloc()函数配对使用,释放malloc函数申请的动态内存。对于free(p)这句语句,如果p 是NULL 指针,…

在Cfree5里使用多行快捷注释的方法

1.打开cfree5,点击上方 工具 选项。 2.点击 工具 选项后,进入“环境选项” 3.进入环境选项后就会发现上方有四个选项,点击“快捷键”这个选项,里面会出现很多操作的快捷键,往下翻就能找到快捷多行注释的选项了 4.此时点…

配置cfree 5 支持C++11

最近想学c的一些用法,但Cfree并不支持,所以在大牛的帮助下配置了一下cfree。 c-free5.0版本已经可以支持c99标准。由于CFree5.0自带的GCC版本只有3.4.0,并不支持C11,所以首先得去下载完整支持C11的4.8.1版本——TDM-GCC-64&#x…

C语言基础入门:C-Free5新建C语言工程

C语言 基础开发----目录 步骤1:打开软件 双击打开C-Free 5 步骤2:新建工程 当打开C-Free5软件的时候,就会弹出以下界面,点击新建工程。 如果没有弹出以上界面,就使用以下方法新建工程。 创建工程名字&#xff0c…