上一章: KL散度
下一章: 矩阵
应用
量子线路的矩阵
获取量子线路 QCircuit 的酉矩阵。
API文档链接
Python
cir = QCircuit()
cir << X(0)<<CP(2,1,5.28)<<CNOT(1,0)
matrix = Unitary(cir)
print(matrix)
执行结果如下所示:
[[0. +0.j 1. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[1. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 1. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 1. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 1. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
0.53761923-0.84318774j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0.53761923-0.84318774j]]
获取内部数据
获取 numpy.ndarray 形式的数据中
获取内部数据,结果将作为 numpy.ndarray
对象返回。
API文档链接
Python
def test_ndarray():
cir = QCircuit()
cir << X(0)<<CP(2,1,5.28)<<CNOT(1,0)
U = Unitary(cir)
print("U",U)
arr = U.ndarray()
print("arr:",arr)
if __name__ == "__main__":
test_ndarray()
执行结果如下所示:
U [[0. +0.j 1. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[1. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 1. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 1. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 1. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
0.53761923-0.84318774j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0.53761923-0.84318774j]]
arr: [[0. +0.j 1. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[1. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 1. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 1. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 1. +0.j 0. +0.j
2. +0.j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
0.53761923-0.84318774j 0. +0.j ]
[0. +0.j 0. +0.j 0. +0.j
1. +0.j 0. +0.j 0. +0.j
2. +0.j 0.53761923-0.84318774j]]
判等
判断两个 Unitary 对象的内部数据是否相等。
API文档链接
Python
def test_eq():
cir = QCircuit()
cir << X(0)<<CP(2,1,5.28)<<CNOT(1,0)
U = Unitary(cir)
U2 = U
print("U2==U:",U2==U)
return U2==U
if __name__ == "__main__":
test_eq()
执行结果如下所示: