我从以下方式更改了类的属性:
self.firstBase = np.array([1, 0])
self.secondBase = np.array([0, 1])
至
self.base = np.array([[1, 0], [0, 1]])
从那时起,将这两个向量与Hadamard矩阵相乘的操作将返回错误的值。
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]。
这是为什么?解决方法是什么?