您是否知道使用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
实际上,我得到了处理G矩阵后,但由于它是对称的,我如何计算对称A的SVD,只有G(换句话说,只有A的上三角矩阵)?
答案 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例程很有用。