Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
当边界条件是周期性的时,检查两点之间欧几里得距离的最佳方法是什么?我尝试取距离和(范围 - 距离)的最小值,但我认为由于我构建程序的方式,这会产生奇怪的输出。我希望有另一种我可以采用的好方法来解决这个问题,而不是重新评估函数的其余部分。
这是在 Python 中。目前使用 numpy.linalg.norm 查找欧几里德距离,尽管有 SciPy pdist 例程可以做我猜想的相同事情。
您应该在每个维度上分别检查 dx 和 range-dx 之间的较小值。
def distance(p1, p2): total = 0 for i, (a, b) in enumerate(zip(p1, p2)): delta = abs(b - a) if delta > dimension[i] - delta: delta = dimension[i] - delta total += delta ** 2 return total ** 0.5