Mendefinisikan dimensi operator di qutip

Aug 16 2020

Pertanyaan utama saya: Adakah yang bisa menjelaskan kepada saya bagaimana daftar larik digunakan untuk menentukan dimensi di qutip?

Konteks:

Jika saya memiliki operator kepadatan A = Qobj(np.arange(1,65).reshape(8,8))3 qubit, bagaimana cara mengambil transpose parsial sehingga saya ingin membuat keterikatan bipartit antara qubit 1 dengan qubit 2 dan 3?

Saya menduga bahwa saya harus mendefinisikan topeng saya sebagai X.dims = [[2,4],[2,4]]dan mengambil qt.partial_transpose(X, [1,0])transposisi parsial yang mengambil atas subsistem kedua. Tapi apa X.dims = [[2,4],[2,4]]artinya di qutip?

Jika ini benar, lalu bagaimana saya mendefinisikan dimensi saya untuk keterjeratan antara qubit 1 dan 3 dan qubit 2?

Jawaban

2 glS Aug 18 2020 at 15:29

Dari dokumentasi resmi :

Q.dims: Membuat daftar pelacakan bentuk untuk masing-masing komponen sistem multipartit (untuk produk tensor dan jejak parsial).

Dengan kata lain, Anda dapat menganggapnya sebagai dimensi (representasi matriks) objek yang sedang dipertimbangkan, dengan mempertimbangkan struktur tensorial ruang yang mendasarinya. Elemen pertama memberi tahu Anda tentang jumlah baris sedangkan elemen kedua memberi tahu Anda tentang jumlah kolom.

Pertimbangkan sebagai contoh

fooQ = qutip.tensor(qutip.basis(2, 0), qutip.basis(2, 1))

Ini adalah hasil kali tensor dari dua status qubit ket, jadi ini adalah vektor dalam ruang berdimensi $2\times 2$. Sebagai matriks, Anda dapat merepresentasikannya sebagai a$4\times 1$matriks. Tetapi jika Anda ingin mengingat struktur tensor ruang ini, yang mempermudah melakukan hal-hal seperti penelusuran sebagian, lebih baik menyimpan masing-masing dimensi. Anda kemudian berakhir dengan fooQ.dims == [[2, 2], [1, 1]], karena ada$2\times 2$ baris, dan $1=1\times 1$ kolom.

Dalam contoh Anda, [[2, 4], [2, 4]]merepresentasikan matriks kepadatan dalam suatu ruang$\mathcal H_1\otimes\mathcal H_2$ dengan $\dim\mathcal H_1=2$ dan $\dim\mathcal H_2=4$.

Anda dapat memperoleh kembali keseluruhan dimensi ruang dengan melakukan mis

number_of_rows = np.prod(fooQ.dims[0])
number_of_cols = np.prod(fooQ.dims[1])

Atau Anda dapat "mengungkap" dimensi, mendapatkan daftar dimensi dari masing-masing ruang komponen, dengan

unravelled_dimensions = np.transpose(fooQ.dims)