Zum Hauptinhalt springen

Quantenzustände darstellen

Paketversionen

Der Code auf dieser Seite wurde mit den folgenden Anforderungen entwickelt. Wir empfehlen, diese oder neuere Versionen zu verwenden.

qiskit[all]~=2.3.0

In vielen Situationen – etwa beim Lernen oder beim Debuggen – ist es hilfreich, den Zustand eines Quantencomputers zu visualisieren. Hier gehen wir davon aus, dass du bereits einen bestimmten Zustand aus einer Simulation oder einer Zustands-Tomographie vorliegen hast. Es ist nur möglich, die Zustände kleiner Quantensysteme anzuzeigen.

Ausgabe von Funktionen verwenden

Alle Funktionen auf dieser Seite geben reichhaltige Objekte zurück. Wenn die letzte Zeile einer Code-Zelle diese Objekte ausgibt, zeigen Jupyter Notebooks sie unterhalb der Zelle an. Wenn du diese Funktionen in anderen Umgebungen oder in Skripten aufrufst, musst du die Ausgaben explizit anzeigen oder speichern.

Die meisten Funktionen geben Bilder zurück, also matplotlib.Figure-Objekte. Es gibt zwei Möglichkeiten:

  • Rufe .show() auf dem zurückgegebenen Objekt auf, um das Bild in einem neuen Fenster zu öffnen (vorausgesetzt, dein konfiguriertes matplotlib-Backend ist interaktiv).
  • Rufe .savefig("out.png") auf, um die Abbildung als out.png im aktuellen Arbeitsverzeichnis zu speichern. Die Methode savefig() nimmt einen Pfad entgegen, sodass du Ort und Dateiname der Ausgabe anpassen kannst. Zum Beispiel: plot_state_city(psi).savefig("out.png").

Die LaTeX-Ausgaben sind IPython.display.Latex-Objekte. Die beste Option in einer Nicht-Jupyter-Umgebung ist es, diese Ausgabe zu vermeiden, indem du entweder den Zustand als Textdarstellung ausgibst oder zum latex_source-Drawer wechselst, um einen LaTeX-Quellstring zurückzubekommen.

Ein Quantenzustand ist entweder eine Dichtematrix ρ\rho (hermitesche Matrix) oder ein Statevektor ψ|\psi\rangle (komplexer Vektor). Die Dichtematrix hängt mit dem Statevektor zusammen durch

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

und ist allgemeiner, da sie gemischte Zustände darstellen kann (positive Summe von Statevektoren)

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

Qiskit repräsentiert Quantenzustände über die Klassen Statevector und DensityMatrix und bietet viele Visualisierungsfunktionen. Lies die Abschnitte nach der folgenden Code-Zelle, um zu sehen, wie Qiskits verschiedene Visualisierungsfunktionen den folgenden Quantenzustand darstellen.

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

Obwohl es sich technisch gesehen nicht um einen „Plot" handelt, kann Qiskit LaTeX-Darstellungen sowohl von Statevector- als auch von DensityMatrix-Objekten rendern, die in Jupyter Notebooks schön angezeigt werden. Diese folgen den mathematischen Standardkonventionen für die Notation von Quantenzuständen. Mehr dazu erfährst du unter Grundlagen der Quanteninformation: Einzelsysteme.

Statevektoren verwenden standardmäßig die „Ket-Notation", während Dichtematrizen als 2×2-Matrix dargestellt werden.

Du kannst "latex" auch durch "latex_source" ersetzen, um den rohen LaTeX-String zu erhalten.

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

Optionen für Zustandsdarstellungsfunktionen

Alle Zustandsdarstellungsfunktionen akzeptieren die folgenden Argumente (ausgenommen der LaTeX-Drawer, der keine Matplotlib-Abbildung zurückgibt, und plot_state_qsphere, der nur figsize akzeptiert):

  • title (str): ein String für den Titel des Plots, der oben im Plot angezeigt wird
  • figsize (tuple): Abbildungsgröße in Zoll (Breite, Höhe)

Die Funktionen plot_state_city und plot_state_paulivec akzeptieren außerdem ein color-Argument (Liste von Strings), das die Farben der Balken festlegt. Weitere Informationen findest du in der API-Dokumentation.

Du erinnerst dich nicht an den Namen der benötigten Darstellungsfunktion? Frag den Qiskit Code Assistant.

Nächste Schritte

Empfehlungen