作业帮 > 综合 > 作业

关于求矩阵SVD的问题

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/06/11 10:42:24
关于求矩阵SVD的问题
最近在弄算法研究到关于矩阵求SVD的知识,找到了徐士良的<C语言常用算法集>的PDF和源程序.

在PDF的2.12说到了关于SVD分解的问题.在验证算法时,发现按书本里的矩阵计算SVD和在Matlab里计算相同矩阵的SVD时得出来的结果有差异(如图).那么究竟是什么问题造成的呢?有哪位大大研究过这个问题?
原矩阵:

PDF里的结果(使用相应源码也可以得到一致):


Matlab计算结果:

你自己看matlab对svd的说明,
X= U*S*V'
这里的V是转置的
所以跟你的C程序结果是转置
其次正负号可以随便分配的,例如你把U的符号全取负号,那么V也是全取负号
然后就是精度问题,你在matlab 先输入format long
就能看到更多位数了,大小基本是一样的
所以其实结果是等价的,说白了就是S按特征值大小排序的话是唯一的,U,V不唯一
不明白可追问