2

你知道使用 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 的上三角矩阵)?

4

1 回答 1

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 例程会因矩阵存储的具体情况而有所不同。Intel 对 LAPACK 例程有很好的参考;您可能会发现他们对对称特征问题的 LAPACK 例程的决策树很有用。

于 2011-02-19T18:47:06.750 回答