【奇异值分解】奇异值分解可能会出现多个矩阵有相同的分解吗?本来我觉得这是根本...

发布时间:2021-03-25 03:40:26

奇异值分解可能会出现多个矩阵有相同的分解吗?本来我觉得这是根本不可能的,但是现在出现了这么一个情况:这是我用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。) 数学

网友回答

【答案】 标题里的问题是不可能出现的,不过你描述的问题是有可能的,说明你算错了
  首先要注意,尽管不同的矩阵不可能有相同的SVD,但对于同一个矩阵来讲,SVD不是唯一的
  比较简单的情况,A=∑σ_i v_i u_i^T,可以看出即使没有重奇异值v_i和u_i也可能不唯一,比如(v_i*z)(u_i^T/z)也满足条件,其中z是单位复数
  有重奇异值的时候U和V松动的余地更大
  所以我估计你的算法里U和V是分开算的,并没有互相故及对方 追问: ???????????????鷳???????????лл?? 追答: ????????????????????????dqds??????, ?????????? ???????????????, ??????????????????????? ???????k??????????????, A_k = ??_1 v_1 u_1^T + ... + ??_k v_k u_k^T ??A???????k???(??Frobenius????), ??????????????, ???????????||A-A_k||??С
以上问题属网友观点,不代表本站立场,仅供参考!