如何将非常接近的复数识别为相等?
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
我正在用数值方法求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