【发布时间】:2021-09-14 11:13:48
【问题描述】:
假设使用 Python 和 NumPy (1.20.1) 有两个复数:
a = 5 + 1j*3
a0 = 4 + 1j*2
我想计算相移,也就是两个角度之间的距离。我得到两个略有不同的结果:
>>> np.angle(a*np.conjugate(a0))
0.07677189126977804
>>> np.angle(a) - np.angle(a0)
0.07677189126977807
我想最正确的方法应该是第一种。 在某些情况下差异更大,在其他情况下则没有。
有人知道这种差异的根源吗?
干杯。
编辑 我找到了一个更相关的例子:
>>> a = 41.887609743111966+3.868827773225067j
>>> a0 = -65.06495257694792-0.19335140606773393j
>>> np.angle(a) - np.angle(a0)
3.2307217955357035
>>> np.angle(a*np.conjugate(a0))
-3.0524635116438827
【问题讨论】:
-
每当您使用计算机和浮点数时,几乎所有地方都会遇到数字不准确的情况。
-
当然。我很清楚这一点。但是,问题是关于这个错误的起源。谢谢。
-
@NilsWerner 请检查添加的示例。我机器上的差异不可忽略。
标签: python-3.x numpy complex-numbers