矩阵和张量理论分析与计算_矩阵张量积

(3) 2024-08-08 19:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
矩阵和张量理论分析与计算_矩阵张量积,希望能够帮助你!!!。

最近开始使用pyqpanda答题,之前一直用qiskit搭电路,初上手pyqpanda 还是有些不适应。

开始入手,本帖验证下门电路的矩阵表示以及多门多线路的矩阵表达。(完全是为了印证下数学概念的表达,没什么高深的东西)

from pyqpanda import * init(QMachineType.CPU) qbits = qAlloc_many(2) prog = QProg() prog << X(qbits[0]) prog << Z(qbits[1]) mat = np.array(get_matrix(prog,True)).reshape(4,4) print(mat) print(draw_qprog(prog))

输出如下:

矩阵和张量理论分析与计算_矩阵张量积_https://bianchenghao6.com/blog__第1张

同样用X,Z门各自的幺正矩阵凑出来如下:

def get_matrix_gate(gate): init(QMachineType.CPU) qbits = qAlloc_many(1) prog = QProg() prog<<gate(qbits[0]) mat = np.array(get_matrix(prog,True)).reshape(2,2) return np.mat(mat) X_mat = get_matrix_gate(X) print(X_mat) Z_mat = get_matrix_gate(Z) print(Z_mat) print('Tensor product of two gate') two_qbits_matrix = np.kron(Z_mat,X_mat) print(two_qbits_matrix)

输出如下:

矩阵和张量理论分析与计算_矩阵张量积_https://bianchenghao6.com/blog__第2张

张量积的矩阵与两个量子比特位的线路矩阵相同,说明:

在pyqpanda 中,

1)索引值高的量子比特位是高位,np.kron(高位门矩阵,低位门矩阵)

2)get_matrix(prog,True) api的第二个参数True表示大小端,在输出矩阵时,尤其是线路矩阵时,!!必须!!,强调下,必须指定为True,否则输出的高低位顺序是反的。然而pyqpanda.get_matrix()中默认是False,这样输出的矩阵对应: 低位矩阵 kron 高位矩阵,如果直接与态矢量(4 by 1)相乘会出错!

比如,默认调用 get_matrix 口:

from pyqpanda import * init(QMachineType.CPU) qbits = qAlloc_many(2) prog = QProg() prog << X(qbits[0]) prog << Z(qbits[1]) mat = np.array(get_matrix(prog)).reshape(4,4) print(draw_qprog(prog)) print('Two qbits circuit matrix: ') print(mat) print('Tensor product of two gate (X_mat )') two_qbits_matrix = np.kron(X_mat,Z_mat) print(two_qbits_matrix)

 输出:

矩阵和张量理论分析与计算_矩阵张量积_https://bianchenghao6.com/blog__第3张

初步使用pyqpanda时,发现这个小的不便之处。

之前使用qiskit 打印电路的矩阵时,默认是输出 高位矩阵直积低位矩阵的结果。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复