通过广播对复数的 numpy 数组进行逐元素乘法
Element-wise multiplication of numpy arrays of complex numbers by broadcast
我正在尝试通过从整个复数数组开始并迭代适当的值来创建一个 mandelbrot 集
# int array
int_array = np.array([i for i in range(10)])
squared_int = int_array ** 2
squares = np.array([i**2 for i in range(10)])
squared_int == squares
这给出了我期望的输出。包含数字 0-9
的平方的数组
# complex array
complex_array = np.array([complex(i,i) for i in range(10)])
squared_complex = complex_array ** 2
complex_squares = np.array([complex(i,i)*complex(i,i) for i in range(10)])
squared_complex == complex_squares # array of True
我希望以下语句产生 True,但它们没有。
1+1j * 1+1j == complex_squares[1]
2+2j * 2+2j == squared_complex[2]
complex_squares 和 squared_complex 的内容如下所示:
array([0. +0.j, 0. +2.j, 0. +8.j, 0. +18.j, 0. +32.j, 0. +50.j,
0. +72.j, 0. +98.j, 0.+128.j, 0.+162.j])
我也尝试检查 complex(i,i) 是否等价于 i+ij,结果很奇怪:
complex(1,1) == 1+1j # True
complex(1,1) ** 2 == 1+1j**2 # False
complex(1,1) ** 2 # 2j
1+1j ** 2 # 0j
1+1j * 1+1j # 1+2j
complex(1,1) * complex(1,1) # 2j
为什么会这样?
为什么 complex(i,i) 和 i+ij 不一致?
我还以为是一样的呢
如@Onyambu所述:
您需要括号,即 (1+1j)**2
。否则你正在做 1+1j*1j
,这不是复数的平方。
就像@André Sbrocco Figueiredo 提到的那样,原因是您没有使用 pharantases。这是修复:
print(complex(1,1) == 1+1j) # True
print(complex(1,1) ** 2 == (1+1j)**2) # True
print(complex(1,1) ** 2) # 2j
print((1+1j) ** 2) # 2j
print((1+1j) * (1+1j)) # 2j
print(complex(1,1) * complex(1,1)) # 2j
干杯。
我正在尝试通过从整个复数数组开始并迭代适当的值来创建一个 mandelbrot 集
# int array
int_array = np.array([i for i in range(10)])
squared_int = int_array ** 2
squares = np.array([i**2 for i in range(10)])
squared_int == squares
这给出了我期望的输出。包含数字 0-9
的平方的数组# complex array
complex_array = np.array([complex(i,i) for i in range(10)])
squared_complex = complex_array ** 2
complex_squares = np.array([complex(i,i)*complex(i,i) for i in range(10)])
squared_complex == complex_squares # array of True
我希望以下语句产生 True,但它们没有。
1+1j * 1+1j == complex_squares[1]
2+2j * 2+2j == squared_complex[2]
complex_squares 和 squared_complex 的内容如下所示:
array([0. +0.j, 0. +2.j, 0. +8.j, 0. +18.j, 0. +32.j, 0. +50.j,
0. +72.j, 0. +98.j, 0.+128.j, 0.+162.j])
我也尝试检查 complex(i,i) 是否等价于 i+ij,结果很奇怪:
complex(1,1) == 1+1j # True
complex(1,1) ** 2 == 1+1j**2 # False
complex(1,1) ** 2 # 2j
1+1j ** 2 # 0j
1+1j * 1+1j # 1+2j
complex(1,1) * complex(1,1) # 2j
为什么会这样? 为什么 complex(i,i) 和 i+ij 不一致? 我还以为是一样的呢
如@Onyambu所述:
您需要括号,即 (1+1j)**2
。否则你正在做 1+1j*1j
,这不是复数的平方。
就像@André Sbrocco Figueiredo 提到的那样,原因是您没有使用 pharantases。这是修复:
print(complex(1,1) == 1+1j) # True
print(complex(1,1) ** 2 == (1+1j)**2) # True
print(complex(1,1) ** 2) # 2j
print((1+1j) ** 2) # 2j
print((1+1j) * (1+1j)) # 2j
print(complex(1,1) * complex(1,1)) # 2j
干杯。