我有输入矩阵:
let t = [
[0,1,0],
[0,1,0],
[0,0,0]
]
我想计算SVD。我这样做:
let U = N.svd(t).U;
你是
[-0.7071067811865475, 0.7071067811865475, 0]
[-0.7071067811865475, -0.7071067811865475, 0]
[0, 0, 1]
我在Python中执行相同的过程,numpy:
A=np.array([[0,1,0],[0,1,0],[0,0,0]])
np.linalg.svd(A)[0]
输出:
[0.7071067811865475, 0, -0.7071067811865475]
[0.7071067811865475, 0, 0.7071067811865475]
[0, 1, 0]
这是一个错误吗?我该怎么办 ?这不是他们结果不同的唯一一次。我应该相信谁?
答案 0 :(得分:2)
在SVD结果中,由于算法不同,存在一些可能的变化。
可能有这发生在这里。您的输入是秩-1矩阵,即2个奇异值为零,这解释了最后2列的排列。标志翻转也很明显。