Я пытаюсь создать множество Мандельброта, начиная с целого массива комплексных чисел и повторяя соответствующие значения
# 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
Почему этопроисходит?Почему сложные (i, i) и i + ij несовместимы?Я думал, что это одно и то же.