Я изменил атрибуты класса с:
self.firstBase = np.array([1, 0])
self.secondBase = np.array([0, 1])
на
self.base = np.array([[1, 0], [0, 1]])
С тех пор операция умножения этих двух векторов на матрицу Адамара возвращает неправильное значение.
def H(self):
H = np.array([[1 / math.sqrt(2), 1 / math.sqrt(2)],
[1 / math.sqrt(2), - 1 / math.sqrt(2)]])
topValue = H[0][0] * self.base[0][0] + H[0][1] * self.base[0][1]
bottomValue = H[1][0] * self.base[0][0] + H[1][1] * self.base[0][1]
self.base[0] = np.array([topValue, bottomValue])
topValue = H[0][0] * self.base[1][0] + H[0][1] * self.base[1][1]
bottomValue = H[1][0] * self.base[1][0] + H[1][1] * self.base[1][1]
self.base[1] = np.array([topValue, bottomValue])
return self
Я провел некоторое тестирование и обнаружил, что вычисления все еще верны, но когда я инициализирую
self.base[0] = np.array([topValue, bottomValue])
и
self.base[1] = np.array([topValue, bottomValue])
, это дает мне [0, 0] и [0 , 0] в результате.
Почему это так? Что за исправление?