Reprezentarea grafică a stărilor cuantice
Versiuni de pachete
Codul de pe această pagină a fost dezvoltat folosind următoarele cerințe. Îți recomandăm să folosești aceste versiuni sau unele mai noi.
qiskit[all]~=2.3.0
În multe situații – cum ar fi învățarea sau depanarea – este util să vizualizezi starea unui calculator cuantic. Aici presupunem că ai deja o anumită stare din simulare sau tomografie de stare. Este posibil să vizualizezi doar stările sistemelor cuantice mici.
Toate funcțiile de pe această pagină returnează obiecte complexe. Când ultima linie a unei celule de cod produce aceste obiecte, notebook-urile Jupyter le afișează sub celulă. Dacă apelezi aceste funcții în alte medii sau în scripturi, va trebui să afișezi sau să salvezi explicit rezultatele.
Majoritatea funcțiilor returnează imagini, care sunt obiecte matplotlib.Figure. Două opțiuni sunt:
- Apelează
.show()pe obiectul returnat pentru a deschide imaginea într-o fereastră nouă (presupunând că backend-ul matplotlib configurat este interactiv). - Apelează
.savefig("out.png")pentru a salva figura înout.pngîn directorul de lucru curent. Metodasavefig()acceptă o cale, astfel că poți ajusta locația și numele fișierului în care salvezi rezultatul. De exemplu,plot_state_city(psi).savefig("out.png").
Rezultatele LaTeX sunt obiecte IPython.display.Latex. Cea mai bună opțiune într-un mediu non-Jupyter este să eviți acest tip de rezultat fie afișând starea ca reprezentare text, fie trecând la drawer-ul latex_source pentru a returna un șir de caractere sursă LaTeX.
O stare cuantică este fie o matrice de densitate (matrice hermitică), fie un vector de stare (vector complex). Matricea de densitate este legată de vectorul de stare prin
și este mai generală, deoarece poate reprezenta stări mixte (sumă pozitivă de vectori de stare)
Qiskit reprezintă stările cuantice prin clasele Statevector și DensityMatrix și oferă multe funcții de vizualizare. Consultă secțiunile de după celula de cod de mai jos pentru a vedea cum diferitele funcții de vizualizare din Qiskit reprezintă grafic următoarea stare cuantică.
# 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
Deși nu este tehnic un „grafic", Qiskit poate reda reprezentări LaTeX ale obiectelor Statevector și DensityMatrix care se afișează frumos în notebook-urile Jupyter. Acestea urmează convențiile matematice standard pentru scrierea stărilor cuantice. Citește mai mult în Bazele informației cuantice: Sisteme unice.
Vectorii de stare sunt afișați implicit în „notație ket", iar matricele de densitate sunt afișate ca matrice 2×2.
Poți înlocui și "latex" cu "latex_source" pentru a obține șirul de caractere LaTeX brut.
Acest grafic afișează părțile reale și imaginare ale fiecărui element al matricei de densitate în două diagrame cu bare tridimensionale. Este numit grafic „city" (oraș) deoarece barele seamănă cu zgârie-nori dintr-un oraș. Starea pe care o reprezentăm are următoarea matrice de densitate.
Consultă documentația API pentru mai multe informații.
Acest grafic este foarte similar cu graficul „city", dar magnitudinea fiecărui element este reprezentată prin dimensiunea unui pătrat, nu prin înălțimea unei bare. Pătratele albe reprezintă elementele cu valori pozitive, iar pătratele negre reprezintă elementele cu valori negative. Starea pe care o reprezentăm are următoarea matrice de densitate.
Consultă documentația API pentru mai multe informații.
Un observabil este o metodă de măsurare a unei stări cuantice astfel încât rezultatele posibile ale măsurătorii să fie numere reale. Valoarea așteptată a rezultatului este cunoscuta și sub numele de valoarea de așteptare a observabilului pe acea stare și poate fi gândită ca media unui număr infinit de observații ale acelei stări.
Produsele tensoriale ale matricelor Pauli sunt observabile care returnează +1 sau -1. Acest grafic afișează valorile de așteptare ale stării pe diferiți operatori Pauli sub formă de diagramă cu bare. Toate matricele de densitate pot fi scrise ca o sumă a acestor matrice Pauli, ponderate de valorile lor de așteptare.
De exemplu, această stare poate fi scrisă ca suma termenilor:
Poți calcula acești coeficienți și folosind SparsePauliOp.
Consultă documentația API pentru mai multe informații.
„QSphere" este o vizualizare unică Qiskit a unei stări cuantice în care amplitudinea și faza fiecărui element dintr-un vector de stare sunt reprezentate pe suprafața unei sfere. Grosimea fiecărui punct reprezintă amplitudinea, iar culoarea reprezintă faza. Pentru stările mixte, va afișa câte o sferă pentru fiecare componentă.
Consultă documentația API pentru mai multe informații.
Vectorul Bloch al unei stări Qubit reprezintă valoarea sa de așteptare pe observabilele Pauli X, Y și Z, mapate pe axele X, Y și Z din spațiul tridimensional. Acest grafic proiectează stările cuantice multi-Qubit pe spațiul unui singur Qubit și reprezintă fiecare Qubit pe o sferă Bloch. Această vizualizare arată doar valorile de așteptare ale Qubiților individuali. Nu poate arăta corelațiile dintre Qubiți și, prin urmare, nu poate descrie complet stările cuantice entanglate.
Consultă documentația API pentru mai multe informații.
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")
Opțiuni pentru funcțiile de reprezentare grafică a stărilor
Toate funcțiile de reprezentare grafică a stărilor acceptă următoarele argumente (cu excepția drawer-ului LaTeX, care nu returnează o figură Matplotlib, și plot_state_qsphere, care acceptă doar figsize):
- title (str): un șir de caractere pentru titlul graficului, afișat în partea de sus a graficului
- figsize (tuple): dimensiunea figurii în inci (lățime, înălțime)
Funcțiile plot_state_city și plot_state_paulivec acceptă și un argument color (listă de șiruri de caractere) care specifică culorile barelor. Consultă documentația API pentru mai multe informații.
Pași următori
- Ai nevoie să îți reîmprospătezi cunoștințele despre informații cuantice? Consultă cursul Bazele informației cuantice pe IBM Quantum Learning.
- Citește ghidul de contribuție dacă vrei să contribui la SDK-ul open-source Qiskit.