我正在尝试使用 numpy 库(numpy-MKL-1.6.2.win-amd64-py2.7)中的奇异值分解算法,但我建议这个函数不正确。该函数有以下语句:
from numpy.linalg import *
U, S, V = svd(A, full_matrices=0)
我的假设是基于与 Matlab 中相同函数的比较比较,它给出了正确的答案。我还发现了与V矩阵计算错误有关的问题。
例如,我有矩阵 A:
A =[-15.5714, 19.2143, 15.0000; -2.8462, 7.7692, -3.9615; -19.5000, 3.1111, 4.5556]
在 python 中,我收到:
V = [0.7053, -0.5629, -0.4308; -0.6863, -0.6945, -0.2161; -0.1776, 0.4481, -0.8762]
在 Matlab 中:
V = [0.7053, -0.6863, -0.1776; -0.5629, -0.6945, 0.4481; -0.4308, -0.2161, -0.8762]
差异并不那么明显,但它们在 LLS 计算期间变得至关重要。我该如何克服这个问题?
好的,我找到了答案: [U,S,V]=svd(a) - Matlab U, S, Vh = linalg.svd(a), V = Vh.T - Python 也许我的问题对未来的人有帮助。