如何计算上三角矩阵的SVD(奇异值分解)

时间:2011-02-19 18:36:40

标签: math matrix lapack blas svd

您是否知道使用BLAS或LAPACK计算SVD的算法?

假设我有一个对称的矩阵A:

 1            22           13         14  
22             1           45         24   
13            45            1         34   
14            24           34          1 

从A:

获得上三角矩阵G后
 1            22           13         14  
 0             1           45         24   
 0             0            1         34   
 0             0            0          1
  • 如何计算A的SVD,但是使用G的值?
  • 我是否必须通过所有矩阵A或足以通过G(中间矩阵)?

实际上,我得到了处理G矩阵后,但由于它是对称的,我如何计算对称A的SVD,只有G(换句话说,只有A的上三角矩阵)?

1 个答案:

答案 0 :(得分:2)

如果无法访问矩阵中的所有值,则无法计算矩阵的SVD(即,您无法仅基于上三角形来执行此操作。)

要看到这一点,请查看矩阵的SVD:

A =  0  0     and G =  0  0
     1  0              0  0

或者,更一般地说,采用矩阵的SVD:

B =  0  0
     x  0

表示x的各种值。观察它们是不同的,并得出结论,你不能仅仅基于上三角计算SVD。

修改 Alberto正确地观察到提问者可能正在使用对称(或埃尔米特)矩阵,因此完全可以仅基于上三角计算SVD。

最后有机会回到这一点:人们通常不对对称矩阵执行SVD,因为SVD过于笼统。对称矩阵的所有特征值都是实数,并且特征向量形成正交基础,因此“SVD”实际上只是通常的特征分解。您想要使用的确切LAPACK例程在某种程度上与矩阵存储的细节有所不同。英特尔对LAPACK例程保持了良好的参考;你可能会发现他们的decision-tree用于对称特征问题的LAPACK例程很有用。