Přeskočit na hlavní obsah

Vykreslování kvantových stavů

Verze balíčků

Kód na této stránce byl vyvinut s použitím následujících požadavků. Doporučujeme používat tyto nebo novější verze.

qiskit[all]~=2.3.0

V mnoha situacích – například při učení nebo ladění – je užitečné vizualizovat stav kvantového počítače. Zde předpokládáme, že již máš konkrétní stav ze simulace nebo tomografie stavu. Lze zobrazit pouze stavy malých kvantových systémů.

Použití výstupu funkcí

Všechny funkce na této stránce vrací bohaté objekty. Pokud je posledním řádkem buňky kódu výstup těchto objektů, Jupyter notebooky je zobrazí pod buňkou. Pokud tyto funkce voláš v jiném prostředí nebo ve skriptech, budeš muset výstupy explicitně zobrazit nebo uložit.

Většina funkcí vrací obrázky, což jsou objekty matplotlib.Figure. Máš dvě možnosti:

  • Zavolej .show() na vráceném objektu, čímž obrázek otevřeš v novém okně (za předpokladu, že nakonfigurovaný backend matplotlib je interaktivní).
  • Zavolej .savefig("out.png"), čímž obrázek uložíš jako out.png do aktuálního pracovního adresáře. Metoda savefig() přijímá cestu, takže si můžeš nastavit umístění a název souboru. Například plot_state_city(psi).savefig("out.png").

Výstupy LaTeX jsou objekty IPython.display.Latex. Nejlepší možností v prostředí mimo Jupyter je tomuto výstupu se vyhnout – buď vytiskni stav jako textovou reprezentaci, nebo přepni na drawer latex_source, který vrátí zdrojový řetězec LaTeX.

Kvantový stav je buď hustotní matice ρ\rho (hermitovská matice), nebo stavový vektor ψ|\psi\rangle (komplexní vektor). Hustotní matice souvisí se stavovým vektorem takto:

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

a je obecnější, protože může reprezentovat smíšené stavy (kladný součet stavových vektorů):

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

Qiskit reprezentuje kvantové stavy prostřednictvím tříd Statevector a DensityMatrix a nabízí mnoho vizualizačních funkcí. Podívej se na části za následující buňkou kódu, kde uvidíš, jak různé vizualizační funkce Qiskitu vykreslují níže uvedený kvantový stav.

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

I když to technicky není „graf", Qiskit dokáže vykreslovat LaTeX reprezentace objektů Statevector i DensityMatrix, které se v Jupyter noteboocích zobrazují přehledně. Řídí se standardními matematickými konvencemi pro zápis kvantových stavů. Více se dočteš v části Základy kvantových informací: Jednoduché systémy.

Stavové vektory se standardně zobrazují v „ket notaci", zatímco hustotní matice jsou zobrazeny jako matice 2×2.

Místo "latex" můžeš použít také "latex_source" pro získání surového řetězce LaTeX.

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

Možnosti funkcí pro vykreslování stavů

Všechny funkce pro vykreslování stavů přijímají následující argumenty (kromě draweru LaTeX, který nevrací obrázek Matplotlib, a plot_state_qsphere, který přijímá pouze figsize):

  • title (str): řetězec pro název grafu, zobrazený v horní části grafu
  • figsize (tuple): velikost obrázku v palcích (šířka, výška)

Funkce plot_state_city a plot_state_paulivec přijímají také argument color (seznam řetězců), který určuje barvy sloupců. Více informací najdeš v dokumentaci API.

Nevzpomínáš si na název funkce pro vykreslování, kterou potřebuješ? Zkus se zeptat Qiskit Code Assistant.

Další kroky

Doporučení