奇异值分解可能会出现多个矩阵有相同的分解吗?本来我觉得这是根-查字典问答网
分类选择

来自刘宗袆的问题

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

3回答
2020-10-11 06:37
我要回答
请先登录
史记

  标题里的问题是不可能出现的,不过你描述的问题是有可能的,说明你算错了

  首先要注意,尽管不同的矩阵不可能有相同的SVD,但对于同一个矩阵来讲,SVD不是唯一的

  比较简单的情况,A=∑σ_iv_iu_i^T,可以看出即使没有重奇异值v_i和u_i也可能不唯一,比如(v_i*z)(u_i^T/z)也满足条件,其中z是单位复数

  有重奇异值的时候U和V松动的余地更大

  所以我估计你的算法里U和V是分开算的,并没有互相故及对方

2020-10-11 06:42:10
刘宗袆

  ׷�����������ƣ��鷳��һ�����ⲹ�䣬лл��

2020-10-11 06:44:48
史记

  Ӧ��˵����Ҫ����������ʱ����dqds��̫�ʺ�,Ӧ�ÿ��DZ���㷨�����ȷʵ��������,��ô��ʵ����������һ�����취��ȷ����k�������ķ�ŵ�ʱ��,A_k=��_1v_1u_1^T+...+��_kv_ku_k^T��A�������k�ƽ�(��Frobenius����),����ֻ������ѡ��,��������ʹ��||A-A_k||��С

2020-10-11 06:45:44

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •