我试图从书中理解一个例子,但根据我在 NumPy 中使用的谱分解函数,我似乎得到了不同的答案。
我正在尝试找到谱分解给定对称矩阵的使用 NumPy 函数eig
和eigh
,后者用于对称矩阵(其中是):
eig
返回以与书中答案不同的顺序排列的列。eigh
返回与书中相似的矩阵,但列中的符号不同和.
这些矩阵是等价的吗?它们在下游使用中产生不同的结果。任何帮助表示赞赏。
G = np.array([[-0.55, 0.3 , 0. , 0. ,0.25],
[ 0.3 , -0.95 , 0. , 0.4 ,0.25],
[ 0. , 0. ,-0.55 , 0.3 ,0.25],
[ 0. , 0.4 , 0.3 ,-0.95 ,0.25],
[ 0.25, 0.25 , 0.25 , 0.25 ,-1. ]])
v1,w1 = np.linalg.eigh(G)
v2,w2 = np.linalg.eig(G)
print w1
array([[ 0.224, 0.224, 0.5 , -0.671, 0.447],
[-0.671, 0.224, -0.5 , -0.224, 0.447],
[-0.224, 0.224, 0.5 , 0.671, 0.447],
[ 0.671, 0.224, -0.5 , 0.224, 0.447],
[ 0. , -0.894, -0. , 0. , 0.447]]))
print w2
array([[-0.447, -0.671, -0.5 , 0.224, -0.224],
[-0.447, -0.224, 0.5 , -0.671, -0.224],
[-0.447, 0.671, -0.5 , -0.224, -0.224],
[-0.447, 0.224, 0.5 , 0.671, -0.224],
[-0.447, 0. , 0. , 0. , 0.894]]))
"Answer in book"
array([[ 0.224, -0.224, 0.5 , 0.671, 0.447],
[-0.671, -0.224, -0.5 , 0.224, 0.447],
[-0.224, -0.224, 0.5 , -0.671, 0.447],
[ 0.671, -0.224, -0.5 , -0.224, 0.447],
[ 0. , 0.894, -0. , 0. , 0.447]]))