奇异值分解可能会出现多个矩阵有相同的分解吗?本来我觉得这是根本不可能的,但是现在出现了这么一个情况:这是我用Matlab算奇异值的时候遇到的一个问题:现在写了一个算奇异值和奇异
奇异值分解可能会出现多个矩阵有相同的分解吗?
本来我觉得这是根本不可能的,但是现在出现了这么一个情况:
这是我用Matlab算奇异值的时候遇到的一个问题:
现在写了一个算奇异值和奇异向量的算法.目前需要验算这个算法,但是验算的时候出了一些问题.
(问题:给出一个200*100的长方阵,我让它的奇异值尽量均匀分布,以便于检验,然后进行奇异值计算.)
(记号:原长方阵是A,我的奇异值算法给出了A=V*Sigma*U(T)【(T)是转置】,VU分别是左奇异向量和右奇异向量,Sigma是对角阵,是奇异值)
1、我检验了我算出来的奇异值和matlab库函数算出来的奇异值,近似度相当好.
2、我检验了A(T)*A和U*Sigma^2*U(T),两个结果基本相近,所以相当于证明了右奇异向量算出来是很接近的.
3、同样地,检验了A*A(T)和V*Sigma^2*V(T),两个结果基本相近,证明了左奇异向量算出来也是很接近的.
但是!A和V*Sigma*U(T)结果差别很明显啊!这是什么情况啊?
万分感谢啊!
-----------------
我刚才重查了一遍计算结果。刚才也仔细想了一下各种可能。发现确实是你说的这种情况:
因为我限定整个计算在实数域进行,所以你表达式里边的z=1或者z=-1。问题就来了。我的U和V确实是分开算的,所以U和V同一个奇异值σ对应的z符号可能不一样!所以整个加和一做完就彻底乱了……(伤心啊……)
请问我应该怎么保证他们符号一样啊?
(我用dqds算法算的奇异值,没办法产生奇异向量。所以对A(T)A和AA(T)分别用了逆幂法算了他们的特征向量,从而得到奇异向量。)我应该怎么办啊?
(我现在的目标需要保证A=V*Sigma*U(T)这个式子至少是对的,从而至少给出一组V、U、Sigma。)