Przejdź do głównej treści

Wykreślanie stanów kwantowych

Package versions

The code on this page was developed using the following requirements. We recommend using these versions or newer.

qiskit[all]~=2.3.0

W wielu sytuacjach – takich jak nauka czy debugowanie – pomocne jest zwizualizowanie stanu komputera kwantowego. Zakładamy tutaj, że masz już określony stan uzyskany z symulacji lub tomografii stanów. Stany małych układów kwantowych można oglądać jedynie w przypadku niewielkich systemów.

Korzystanie z wyników funkcji

Wszystkie funkcje na tej stronie zwracają bogate obiekty. Gdy ostatnia linia komórki kodu zwraca te obiekty, notebooki Jupyter wyświetlają je poniżej komórki. Jeśli wywołujesz te funkcje w innym środowisku lub w skryptach, musisz jawnie wyświetlić lub zapisać wyniki.

Większość funkcji zwraca obrazy będące obiektami matplotlib.Figure. Dostępne są dwie opcje:

  • Wywołaj .show() na zwróconym obiekcie, aby otworzyć obraz w nowym oknie (przy założeniu, że skonfigurowany backend matplotlib jest interaktywny).
  • Wywołaj .savefig("out.png"), aby zapisać rysunek do pliku out.png w bieżącym katalogu roboczym. Metoda savefig() przyjmuje ścieżkę, więc możesz dostosować lokalizację i nazwę pliku, w którym zapisujesz wynik. Na przykład: plot_state_city(psi).savefig("out.png").

Wyniki w formacie LaTeX to obiekty IPython.display.Latex. Najlepszym rozwiązaniem w środowisku innym niż Jupyter jest unikanie tego wyjścia poprzez wydrukowanie stanu jako reprezentacji tekstowej lub przełączenie się na drawer latex_source, który zwraca ciąg znaków źródłowych LaTeX.

Stan kwantowy to macierz gęstości ρ\rho (macierz hermitowska) lub wektor stanu ψ|\psi\rangle (wektor zespolony). Macierz gęstości jest powiązana z wektorem stanu przez

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

i jest bardziej ogólna, ponieważ może reprezentować stany mieszane (dodatnie sumy wektorów stanu)

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

Qiskit reprezentuje stany kwantowe za pomocą klas Statevector i DensityMatrix oraz udostępnia wiele funkcji wizualizacji. Zapoznaj się z sekcjami po poniższej komórce kodu, aby zobaczyć, jak różne funkcje wizualizacji Qiskit wykreślają następujący stan kwantowy.

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

Choć technicznie nie jest to „wykres", Qiskit potrafi renderować reprezentacje LaTeX zarówno obiektów Statevector, jak i DensityMatrix, które wyświetlają się czytelnie w notebookach Jupyter. Są one zgodne ze standardowymi konwencjami matematycznymi zapisu stanów kwantowych. Dowiedz się więcej w artykule Basics of quantum information: Single systems.

Wektory stanu domyślnie używają „notacji ket", natomiast macierze gęstości wyświetlane są jako macierz 2×2.

Możesz również zastąpić "latex" przez "latex_source", aby uzyskać surowy ciąg znaków 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

Opcje funkcji wykreślania stanów

Wszystkie funkcje wykreślania stanów przyjmują następujące argumenty (z wyjątkiem drawera LaTeX, który nie zwraca figury Matplotlib, oraz plot_state_qsphere, który przyjmuje tylko figsize):

  • title (str): ciąg znaków stanowiący tytuł wykresu, wyświetlany u góry
  • figsize (tuple): rozmiar figury w calach (szerokość, wysokość)

Funkcje plot_state_city i plot_state_paulivec przyjmują również argument color (lista ciągów znaków) określający kolory słupków. Więcej informacji znajdziesz w dokumentacji API.

Nie pamiętasz nazwy potrzebnej funkcji do wykreślania? Spróbuj zapytać Qiskit Code Assistant.

Następne kroki

Zalecenia