SVD也是对矩阵进行分解,但是和特征分解不同,SVD并不要求要分解的矩阵为方阵。假设我们的矩阵A是一个m×n的矩阵,那么我们定义矩阵A的SVD为:A=UΣVT
其中U是一个m×m的矩阵,Σ是一个m×n的矩阵,除了主对角线上的元素以外全为0,主对角线上的每个元素都称为奇异值,V是一个n×n的矩阵。U和V都是酉矩阵,即满足UTU=I,VTV=I。
以下是一个SVD求解过程:
以下是我使用Python实现的SVD求解过程
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 17 13:43:48 2018
@author: hanzi5
"""
import numpy as np
#import scipy as sc
# A=UΣVT
#A=np.mat([[0,1],[1,1],[1,0]])
#A=np.mat([[4,0],[3,5]])
#A=np.mat([[1,0,0,0,2],[0,0,3,0,0],[0,0,0,0,0],[0,4,0,0,0]])
A=np.mat([[4,4],[-3,3]])
#A=np.mat([[4,3],[8,6]])
ATA=A.T*A
AAT=A*(A.T)
#求解矩阵的特征值、特征向量
lambda1,vector1 = np.linalg.eig(ATA)
l

这篇博客介绍了Python中如何进行矩阵的奇异值分解(SVD),解释了SVD的数学定义,展示了使用numpy库实现SVD的过程,并探讨了在计算过程中可能出现的正负符号问题及其解决方案,强调了正确使用计算软件求解SVD的重要性。
最低0.47元/天 解锁文章
5645

被折叠的 条评论
为什么被折叠?



