2

当边界条件是周期性的时,检查两点之间欧几里得距离的最佳方法是什么?我尝试取距离和(范围 - 距离)的最小值,但我认为由于我构建程序的方式,这会产生奇怪的输出。我希望有另一种我可以采用的好方法来解决这个问题,而不是重新评估函数的其余部分。

这是在 Python 中。目前使用 numpy.linalg.norm 查找欧几里德距离,尽管有 SciPy pdist 例程可以做我猜想的相同事情。

4

1 回答 1

4

您应该在每个维度上分别检查 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
于 2012-05-01T22:28:31.680 回答