我試圖分裂DFT矩陣的乘法中實部和虛部差異對複數numpy的
from scipy.linalg import dft
improt numpy as np
# x is always real
x = np.ones(4)
W = dft(4)
Wx = W.dot(x)
Wxme = np.real(W).dot(x) + np.imag(W).dot(x)*1.0j
我想是W1和Wxme給出相同的值但他們根本沒有。我縮小了該bug多一點:
In [62]: W[1]
Out[62]:
array([ 1.00000000e+00 +0.00000000e+00j,
6.12323400e-17 -1.00000000e+00j,
-1.00000000e+00 -1.22464680e-16j, -1.83697020e-16 +1.00000000e+00j])
In [63]: np.sum(W[1])
Out[63]: (-2.2204460492503131e-16-1.1102230246251565e-16j)
In [64]: sum(W[1])
Out[64]: (-1.8369701987210297e-16-2.2204460492503131e-16j)
爲什麼sum
和np.sum
給出不同的價值觀複數的加法不應該是什麼,而是單獨添加真實部分和虛部對嗎?
添加用手給我的結果,而不是我希望什麼numy給我:
In [65]: 1.00000000e+00 + 6.12323400e-17 + -1.00000000e+00 + 1.83697020e-16
Out[65]: 1.8369702e-16
我在想什麼?
'1 + -j - 1 + j = 0' – hpaulj