python解zuobiaoxi方程_矩阵的特征分解(推导+手算+python计算+对称矩阵的特征分解性质)...

fbf174ea155693da0f37452d34a26748.png



1. 前言

最近几天一直在学习矩阵的知识,恶补了特征分解和SVD算法,发现网上很多资料都是不全的,所以想记录一下这里面的特征分解推导过程。

要学会矩阵的特征分解,可以提前看矩阵的一些基础知识: https://blog.csdn.net/qq_30232405/article/details/104588293

2.矩阵的进阶知识

2.1 特征分解(谱分解)=>只可以用在方阵上

2.1.1 特征分解的原理

如果说一个向量

是方阵
的特征向量,将一定可以表示成下面的形式:

  • 这种形式在数学上的含义:描述的是矩阵
    对向量
    的变换效果只有拉伸,没有旋转。(因为
    这个值是一个数值)
  • 这时候
    就被称为特征向量
    对应的特征值

也可以看成矩阵

,向量
,系数
这三者建立了一种联系,但显然我们无法通过式(2-1)来用
表示
,因为这个式子不是完备的,对于一个秩为
的矩阵
,应该存在
个这样的式子,完备式子应该是:

根据公式(2-2)就可以得到矩阵

的特征分解公式:

  • 矩阵的一组特征向量
    是一组正交向量。
  • 其中
    是这个矩阵
    的特征向量组成的矩阵,
    是一个对角阵,每一个对角线上的元素就是一个特征值。

总结:特征分解,可以得到

个特征向量和特征值,利用这
个特征(代表这个矩阵最重要的特征),就可以近似这个矩阵。

2.1.2 特征分解的合理性

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

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

  • 首先举一个例子,假设矩阵
    和向量
    :

用矩阵

去反复左乘一个向量
,python代码如下:
import 

得到结果:

b3bbf8cc13519c27e487bf53c2ccede7.png

可以看到不断左乘A后,变换后的归一化向量在(0.33,0.2,0.46)附近徘徊,这与计算出来的最大特征值对应的特征向量归一化后的结果是一致的,这也就佐证了矩阵是具有某种不变的特性的。因此为了提取矩阵这种“不变性”,或者说是为了描述变换(矩阵惩罚是一种线性变换)的主要方向是非常有必要的。

2.1.3 特征分解的计算

在 (2-1) 式的基础上,进行一些变形 :

根据线性方程组理论,为了使这个方程有非零解,矩阵

的行列式必须是零:
上式也被称为是
的特征方程,计算出所有
的取值后,再代入
求解对应的

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

(1)手算

求矩阵$A$的特征值和特征向量:

可以得到结果:

时,
:

时,
:

时,
:

(2)python计算

使用python中自带的库eig,其中

为特征向量矩阵,
为特征值。
中的列是对应的每一个特征向量
import 

结果为:

916062825b79f1ee3a219a6cd218b648.png

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

2.1.4 对称矩阵的特征分解(这个性质后面SVD推导用到)

定理:假设矩阵$A$是一个对称矩阵,则其不同特征值对应的特征向量两两正交

证明:

首先进行特征分解:

在公式(2-6)左乘

:

因为矩阵A是一个对称矩阵,可以对式(2-8)的左边做如下变换:

最后通过(2-9)可以得到:

因为
必然等于0。 由于
是矩阵A的任意两个特征向量,所以命题得证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值