Plot keadaan kuantum
Versi pakej
Kod pada halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan penggunaan versi ini atau yang lebih baharu.
qiskit[all]~=2.3.0
Dalam banyak situasi β seperti pembelajaran atau penyahpepijatan β adalah berguna untuk memvisualisasikan keadaan komputer kuantum. Di sini kami andaikan anda sudah mempunyai keadaan tertentu daripada simulasi atau tomografi keadaan. Hanya keadaan sistem kuantum yang kecil sahaja yang boleh dilihat.
Semua fungsi pada halaman ini mengembalikan objek yang kaya. Apabila baris terakhir sel kod mengeluarkan objek ini, notebook Jupyter akan memaparkannya di bawah sel. Jika anda memanggil fungsi ini dalam persekitaran lain atau dalam skrip, anda perlu memaparkan atau menyimpan output secara eksplisit.
Kebanyakan fungsi mengembalikan imej, yang merupakan objek matplotlib.Figure. Dua pilihan adalah:
- Panggil
.show()pada objek yang dikembalikan untuk membuka imej dalam tetingkap baharu (dengan syarat backend matplotlib yang dikonfigurasikan bersifat interaktif). - Panggil
.savefig("out.png")untuk menyimpan rajah keout.pngdalam direktori kerja semasa. Kaedahsavefig()menerima laluan supaya anda boleh menyesuaikan lokasi dan nama fail output. Contohnya,plot_state_city(psi).savefig("out.png").
Output LaTeX adalah objek IPython.display.Latex. Pilihan terbaik dalam persekitaran bukan-Jupyter adalah untuk mengelakkan output ini dengan sama ada mencetak keadaan untuk perwakilan teks, atau beralih kepada drawer latex_source untuk mendapatkan rentetan sumber LaTeX.
Keadaan kuantum adalah sama ada matriks ketumpatan (matriks Hermitian) atau statevector (vektor kompleks). Matriks ketumpatan berkaitan dengan statevector melalui
dan lebih umum, kerana ia boleh mewakili keadaan campuran (hasil tambah positif statevector)
Qiskit mewakili keadaan kuantum melalui kelas Statevector dan DensityMatrix serta menyediakan banyak fungsi visualisasi. Lihat bahagian selepas sel kod berikut untuk melihat bagaimana fungsi visualisasi berbeza Qiskit memplot keadaan kuantum berikut.
# Added by doQumentation β required packages for this notebook
!pip install -q qiskit
from math import pi
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
# Create a Bell state for demonstration
qc = QuantumCircuit(2)
qc.h(0)
qc.crx(pi / 2, 0, 1)
psi = Statevector(qc)
- LaTeX
- City
- Hinton
- Pauli vector
- Qsphere
- Bloch
Walaupun bukan secara teknikalnya sebuah "plot", Qiskit boleh merender perwakilan LaTeX bagi objek Statevector dan DensityMatrix yang dipaparkan dengan cantik dalam notebook Jupyter. Ini mengikuti konvensyen matematik standard untuk menuliskan keadaan kuantum. Baca lebih lanjut dalam Asas maklumat kuantum: Sistem tunggal.
Statevector lalai kepada "notasi ket", manakala matriks ketumpatan dipaparkan sebagai matriks 2Γ2.
Anda juga boleh menggantikan "latex" dengan "latex_source" untuk mendapatkan rentetan LaTeX mentah.
Plot ini memaparkan bahagian nyata dan khayalan setiap elemen matriks ketumpatan dalam dua carta bar tiga dimensi. Ia dipanggil plot "city" kerana bar-bar tersebut menyerupai pencakar langit dalam sebuah bandar. Keadaan yang kita plot mempunyai matriks ketumpatan berikut.
Lihat dokumentasi API untuk maklumat lanjut.
Plot ini sangat serupa dengan plot "city", tetapi magnitud setiap elemen diwakili oleh saiz segi empat sama dan bukannya ketinggian bar. Segi empat sama putih mewakili elemen dengan nilai positif, dan segi empat sama hitam mewakili elemen dengan nilai negatif. Keadaan yang kita plot mempunyai matriks ketumpatan berikut.
Lihat dokumentasi API untuk maklumat lanjut.
Observable ialah cara untuk mengukur keadaan kuantum supaya hasil pengukuran yang mungkin adalah nombor nyata. Nilai jangkaan hasil tersebut juga dikenali sebagai nilai jangkaan observable pada keadaan itu, dan boleh dianggap sebagai purata pemerhatian infiniti ke atas keadaan tersebut.
Hasil darab tensor matriks Pauli adalah semua observable yang mengembalikan +1 atau -1. Plot ini memaparkan nilai jangkaan keadaan pada operator Pauli berbeza sebagai carta bar. Semua matriks ketumpatan boleh ditulis sebagai hasil tambah matriks Pauli ini, dibobotkan oleh nilai jangkaan mereka.
Sebagai contoh, keadaan ini boleh ditulis sebagai hasil tambah sebutan:
Anda juga boleh mengira pekali ini menggunakan SparsePauliOp.
Lihat dokumentasi API untuk maklumat lanjut.
"QSphere" ialah pandangan unik Qiskit terhadap keadaan kuantum di mana amplitud dan fasa setiap elemen dalam statevector diplotkan pada permukaan sfera. Ketebalan setiap titik mewakili amplitud, dan warna mewakili fasa. Untuk keadaan campuran, ia akan menunjukkan sfera untuk setiap komponen.
Lihat dokumentasi API untuk maklumat lanjut.
Vektor Bloch bagi keadaan Qubit ialah nilai jangkaannya dalam observable Pauli X, Y, dan Z yang dipetakan kepada paksi X, Y, dan Z dalam ruang tiga dimensi. Plot ini mengunjurkan keadaan kuantum berbilang-Qubit ke ruang Qubit tunggal dan memplotkan setiap Qubit pada sfera Bloch. Visualisasi ini hanya menunjukkan nilai jangkaan Qubit individu. Ia tidak dapat menunjukkan korelasi antara Qubit dan oleh itu tidak dapat menerangkan sepenuhnya keadaan kuantum yang kusut.
Lihat dokumentasi API untuk maklumat lanjut.
psi.draw("latex") # psi is a Statevector object
from qiskit.quantum_info import DensityMatrix
DensityMatrix(psi).draw("latex") # convert to a DensityMatrix and draw
from qiskit.visualization import plot_state_city
plot_state_city(psi)
# Alternative: psi.draw("city")
from qiskit.visualization import plot_state_hinton
plot_state_hinton(psi)
# Alternative: psi.draw("hinton")
from qiskit.visualization import plot_state_paulivec
plot_state_paulivec(psi)
# Alternative: psi.draw("paulivec")
from qiskit.quantum_info import SparsePauliOp
SparsePauliOp.from_operator(psi)
SparsePauliOp(['II', 'IX', 'XY', 'YI', 'YX', 'YZ', 'ZI', 'ZX', 'ZZ'],
coeffs=[ 0.25 +0.j, 0.1767767+0.j, -0.1767767+0.j, -0.125 +0.j,
-0.1767767+0.j, 0.125 +0.j, 0.125 +0.j, 0.1767767+0.j,
0.125 +0.j])
from qiskit.visualization import plot_state_qsphere
plot_state_qsphere(psi)
# Alternative: psi.draw("qsphere")
from qiskit.visualization import plot_bloch_multivector
plot_bloch_multivector(psi)
# Alternative: psi.draw("bloch")
Pilihan untuk fungsi plot keadaanβ
Semua fungsi plot keadaan menerima argumen berikut (kecuali drawer LaTeX, yang tidak mengembalikan rajah Matplotlib, dan plot_state_qsphere, yang hanya menerima figsize):
- title (str): rentetan untuk tajuk plot, dipaparkan di bahagian atas plot
- figsize (tuple): saiz rajah dalam inci (lebar, tinggi)
Fungsi plot_state_city dan plot_state_paulivec juga menerima argumen color (senarai rentetan) yang menentukan warna bar. Lihat dokumentasi API untuk maklumat lanjut.
Langkah seterusnyaβ
- Perlu menyegar semula pengetahuan maklumat kuantum anda? Lihat kursus Asas maklumat kuantum di IBM Quantum Learning.
- Baca garis panduan penyumbangan jika anda ingin menyumbang kepada Qiskit SDK sumber terbuka.