如何将非常接近的复数识别为相等?

How to recognize very close complex numbers as equal?

我正在用数值方法求1的立方根。我的方法有效,即从不同的起点收敛到三个根,目测。

但是,当我使用numpy.unique()求三个根时,复数部分略有不同,导致我无法提取根。

现在我将每个复数分成实部和虚部,四舍五入并进行比较。但是,这很笨重。有没有更好的方法?

我会计算它们的差值的绝对值并与 float 的 epsilon 进行比较:

import math
import sys


def almost_equal(a, b):
    d = a - b
    return math.sqrt(d.real ** 2 + d.imag ** 2) < sys.float_info.epsilon