gpt4 book ai didi

python - 复数 numpy 的 sum 和 np.sum 之间的区别

转载 作者:太空宇宙 更新时间:2023-11-04 10:15:21 25 4
gpt4 key购买 nike

我正在尝试将 dft 矩阵的乘法拆分为实部和虚部

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

我希望 Wx 和 Wxme 给出相同的值,但它们根本不是。我进一步缩小了错误范围:

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)

为什么 sumnp.sum 给出不同的值??复数的加法应该只是将实部和虚部分别相加,对吗??

手动添加得到我期望的结果,而不是 numy 给我的结果:

In [65]: 1.00000000e+00 + 6.12323400e-17 + -1.00000000e+00 + 1.83697020e-16
Out[65]: 1.8369702e-16

我错过了什么??

最佳答案

除了舍入误差,这些结果是相等的。由于求和顺序不同或用于表示中间结果的精度级别不同等因素,结果略有不同的舍入误差。

关于python - 复数 numpy 的 sum 和 np.sum 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35692436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com