numpy SVD给出了错误的值?

时间:2018-03-23 15:47:23

标签: python numpy svd

我试图习惯用numpy做奇异值分解。我决定从一个例子中对矩阵进行SVD​​,以了解它是如何工作的。 I am following this pdf,其中A = [[3,2,2],[2,3,-2]]。然而,当我运行svd时,我得到了不同的矩阵U和V然后在pdf中提供了什么。它是相同的矩阵,除了标志已被翻转。现在,由于矩阵都是线性算子并且标志都已翻转,因此在技术上仍然是正确的,翻转取消了。但为什么会这样呢?

1 个答案:

答案 0 :(得分:2)

请注意,UV特征向量。缩放特征向量仍然是一个特征向量,但只要您获得PDF中获得的解决方案的线性倍数,就完全可以接受。如果特征值相同,您知道实现是正确的。从您的帖子判断,因为您没有评论特征值,我假设它们是正确的。特征值必须相同,但特征向量可以不同。

在您的情况下,缩放由-1完成,它们仍然是相同特征值的有效特征向量。至于特征向量符号不同的原因很可能是计算SVD的方式。找到实际的左右特征向量在计算上是禁止的,因此完成了一些提示和技巧以达到相同的解决方案,这可能意味着特征向量的比例与您预期的不同。

我最后想指出这篇关于计算SVD的不同算法的Cross Validated帖子。 numpy.svd检查输入矩阵的属性,并选择合适的算法。

https://stats.stackexchange.com/questions/66034/what-are-efficient-algorithms-to-compute-singular-value-decomposition-svd