距离矩阵中点的坐标-实现问题

时间:2020-09-27 22:37:19

标签: python numpy matrix

问题:以下代码未按预期提供给定的示例坐标。 (什么算法?-请参考下面的链接)

我尝试实现此处描述的算法:finding the coordinates of points from distance matrix@math.stackexchange.com

代码:

# https://math.stackexchange.com/questions/156161/finding-the-coordinates-of-points-from-distance-matrix

import numpy as np
from scipy import spatial

example = np.array([[0,0],[1,3],[4,4]])
distance_matrix = spatial.distance_matrix(example,example)
 
def get_m_matrix(distance_matrix):
    d = distance_matrix
    shape = d.shape
    out = np.zeros(shape)
    for i in range(shape[0]):
        for j in range(shape[1]):
            out[i,j] = ( d[0,j]**2 + d[i,0]**2 - d[i,j]**2)/2
    return out
 
m_matrix = get_m_matrix(distance_matrix)
eigenvalue, eigenvectors = np.linalg.eig(m_matrix)
eigenvalue_matrix = np.diag(eigenvalue)
assert np.equal(np.round(np.dot(np.dot(eigenvectors, eigenvalue_matrix),np.linalg.inv(eigenvectors))),np.round(m_matrix)).all()
X = np.dot(eigenvectors, eigenvalue_matrix**0.5)
 
print('example',example,sep='\n')
print('distance_matrix',distance_matrix,sep='\n')
print('m_matrix',m_matrix,sep='\n')
print('eigenvalue',eigenvalue,sep='\n')
print('eigenvectors',eigenvectors,sep='\n')
print('eigenvalue_matrix',eigenvalue_matrix,sep='\n')
print('result',X,sep='\n')

我想我的描述中没有。我阅读并观看了一些有关特征值分解的视频。检查有关那里使用的功能的numpy文档。我很确定M矩阵很好(找到了其他问题,但是算法有点不同,但是M矩阵方程是相同的)。另一件事,我检查了YouTube上的示例中的np.linalg.eig,但特征向量不匹配。断言有效,但仍然令我困惑。

还有一件事,如果您在答案中使用方程式,请请描述变量。您不是在与专家交谈,并且因为他们知道,所以没有专家会读您。像孩子一样回答。谢谢!

0 个答案:

没有答案