Sari la conținutul principal

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.

Utilizarea rezultatelor funcțiilor

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 în out.png în directorul de lucru curent. Metoda savefig() 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 ρ\rho (matrice hermitică), fie un vector de stare ψ|\psi\rangle (vector complex). Matricea de densitate este legată de vectorul de stare prin

ρ=ψψ,\rho = |\psi\rangle\langle \psi|,

și este mai generală, deoarece poate reprezenta stări mixte (sumă pozitivă de vectori de stare)

ρ=kpkψkψk.\rho = \sum_k p_k |\psi_k\rangle\langle \psi_k |.

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)

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.

psi.draw("latex")  # psi is a Statevector object

2200+1201i211\frac{\sqrt{2}}{2} |00\rangle+\frac{1}{2} |01\rangle- \frac{i}{2} |11\rangle

from qiskit.quantum_info import DensityMatrix

DensityMatrix(psi).draw("latex") # convert to a DensityMatrix and draw
[122402i424140i400002i4i4014] \begin{bmatrix} \frac{1}{2} & \frac{\sqrt{2}}{4} & 0 & \frac{\sqrt{2} i}{4} \\ \frac{\sqrt{2}}{4} & \frac{1}{4} & 0 & \frac{i}{4} \\ 0 & 0 & 0 & 0 \\ - \frac{\sqrt{2} i}{4} & - \frac{i}{4} & 0 & \frac{1}{4} \\ \end{bmatrix}
from qiskit.visualization import plot_state_city

plot_state_city(psi)
# Alternative: psi.draw("city")

Output of the previous code cell

from qiskit.visualization import plot_state_hinton

plot_state_hinton(psi)
# Alternative: psi.draw("hinton")

Output of the previous code cell

from qiskit.visualization import plot_state_paulivec

plot_state_paulivec(psi)
# Alternative: psi.draw("paulivec")

Output of the previous code cell

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")

Output of the previous code cell

from qiskit.visualization import plot_bloch_multivector

plot_bloch_multivector(psi)
# Alternative: psi.draw("bloch")

Output of the previous code cell

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.

Nu îți amintești numele funcției de reprezentare grafică de care ai nevoie? Încearcă să întrebi Qiskit Code Assistant.

Pași următori

Recomandări