目录
老饼讲解:一步一步上手学习

【介绍】矩阵分解之-特征值分解

作者 : 老饼 发表日期 : 2025-11-14 23:50:47 更新日期 : 2026-05-11 23:04:57
老饼讲解-简单易懂,干货满满,爽过嗦螺!


矩阵的对角化,一般是指通过对矩阵进行特征值分解,来找出一个可逆矩阵P,使得矩阵A对角化,即,所以矩阵的对角化,往往也称为矩阵特征值分解(eigenvalue decomposition)。

好了,下面让我们一起来详细看看如何将矩阵对角化,以及它的意义。

一、矩阵的特征值分解与对角化

我们先来看看什么是矩阵的对角化,然后再来说说如何将矩阵对角化,开始!

1.1. 矩阵的特征值分解-是什么

矩阵的特征值分解只适用于方阵,它是指将方阵A,分解为如下形式:

 

其中,是一个对角矩阵

一般地,把 的各列称为A的特征向量,对角上的元素称为矩阵A的特征值。

示图如下:

特征值分解

1.2. 矩阵的对角化

当矩阵的特征值分解,写为如下形式时,就称为矩阵的对角化,如下:

 

其中,是一个对角矩阵,

所以,矩阵的对角化是指:对于方阵A,求一个可逆P,使得是一个对角矩阵。

需要注意的是,矩阵的对角化(特征值分解),都只相对方阵而言,且,并不是所有方阵都能对角化(特征值分解)。

二、矩阵特征值分解-方法

好了,那怎么求出矩阵特征值分解中所用的呢,事实上,由于矩阵的对角化和特征值分解是同一回事,所以我们就以矩阵对角化来说矩阵的特征分解好了,这样比较好表述一些,所以,现在需要求出的是矩阵对角化中的P,它一般可以通过特征值分解的方法来求得,下面就说说它是怎么搞的。

2.1. 矩阵对角化-方法

由于

不妨把P的每一列都记为,则对于P的每一列都有:

            

这也就是为什么把P的都一列都称为A的特征向量了,因为它满足上面的条件。

进一步则有:

    

即:

 

上式说明线性相关,因此:

  

展开后是一个关于的n次多项式,即

 

求解多项式求得多个,将各个特征值代入,就可以解得对应的特征向量了,得到了特征向量,也就得到了P。

2.2. 矩阵对角化-例子解说

以 为例,将它对角化的实操过程如下:

矩阵对角化-步骤

1. 计算特征多项式

      

2. 求解特征值

解得:  

3. 求解特征向量

(1) 将代入 ,可得:

  

解得特征向量        

(2) 将代入 ,可得:

      

 解得特征向量  

4. 组装与单位化P

将两个特征向量按列组装,可得到:

                    

进一步将它按列单位化后得到:

 

5. 验证

可进一步验证:

可以看到,就是一个对角矩阵了。

三、矩阵对角化-代码实现

在python中可以使用numpy的linalg.inv()函数来实现矩阵的对角化,具体代码示例如下:

'''
本代码展示在python中如何进行特征值分解
本代码来自《老饼讲解-机器学习》www.bbblearn.com
'''
import numpy as np
A   = np.array([[1.5,0.5],[0.5,1.5]])  # 准备进行对角化的矩阵A
d,P = np.linalg.eig(A)                 # 计算特征值和特征向量
D   = np.linalg.inv(P) @ A @ P         # 对角化A
print("\n原始矩阵A:\n",A)              # 打印原始矩阵A
print("\n特征向量矩阵P:\n",P)          # 打印特征向量矩阵P
print("\n对角化后的特征值D:\n",D)      # 打印对角化后的特征值D

代码运行结果如下:

矩阵特征值分解的结果

可以看到,使用矩阵P对A进行对角化后,得到了对角矩阵D。

总结

矩阵的特征值分解,就是指将方阵A分解为 的形式,它与矩阵的对角化是同一个问题。其中,的对角元素,就称为矩阵A的特征值,而P的每一列就称为A的特征向量。



图标 评论
添加评论