奇异值分解(SVD)

奇异值分解在矩阵理论中非常重要,也有很多实际运用,比如推荐系统,利用满秩分解还能节约存储空间。
在介绍原理之前,先说一下一些概念:
1 酉(you,三声,我都不知道这个字怎么读,哈哈)矩阵。
如果n阶复矩阵A满足:
(1)
则称之为酉矩阵,是不是和正交矩阵的定义很相似, AH 指的是A的共轭对称,如果A是实矩阵,则就是转置,其实我们基本遇到的就是实矩阵。
2 定义:设 AϵCmn ,如果存在非实数 σ 和非零向量 uϵCn,vϵCm 使得 Au=σv,AHv=σu ,则称 σ 为A的奇异值,u和v分别对应于奇异值 σ 的有奇异向量和左奇异向量。
由上式可得: AHAu=σAHv=σ2u,AAHv=σAu=σ2v .
我们可以看出特征值与奇异值的关系是:矩阵与矩阵共轭转置的乘积构成的矩阵的特征值的开方就是原矩阵的奇异值。
有如下定理(内容来自教材书,附有证明)
1
2
接下来,我想实现以下SVD算法。
给出一个特殊的例子(例子也是书上的)

A=[0 1;-1 0;0 2;1 0];
A_t=A'*A%特殊之处在于A_t就是一个对角矩阵,可以直接知道奇异值和特征向量,从而知道U
A_t1=diag((sqrt(diag(A_t))).^(-1))
U=eye(size(A,2))
V1=A*U*A_t1%由U得到V1
V2=null(V1','r')%V1与V2是正交的
V_2=sqrt(sum(V2.^2))
V_2_1=repmat(V_2,size(V2,1),1)
V_2_2=vpa(V2./V_2_1,4)
V=vpa(cat(2,V1,V_2_2),4)
m=size(A,1)-size(A_t,1)
n=size(A_t,2)
A=vpa(V*cat(1,sqrt(A_t),zeros(m,n))*U',4)%矩阵恢复

需要注意的是 V1 V2 是正交的,所以求解 V1x=0 就可以得出 V2 ,这在证明里可以体现出来。
如有错误,欢迎指出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值