上一章: 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()
输出