Skip to main content
IBM Quantum Platform

Zustandsvektor

class qiskit.quantum_info.Statevector(data, dims=None)

GitHub

Basen: QuantumState, TolerancesMixin

Zustandsvektor-Klasse

Initialisieren eines Zustandsvektorobjekts.

Parameter

  • data (np.ndarray | list |Statevector |Operator |QuantumCircuit |circuit.instruction.Instruction) – Daten, aus denen der Zustandsvektor konstruiert werden kann. InstructionDies kann entweder ein komplexer Vektor, ein anderer Zustandsvektor, ein Operator mit nur einer Spalte oder ein QuantumCircuit oder sein. Handelt es sich bei den Daten um eine Schaltung oder einen Befehl, wird der Zustandsvektor unter der Annahme konstruiert, dass alle Qubits auf den Nullzustand initialisiert sind.
  • dims (int |tuple |list | None) – Die Subsystemdimension des Zustands (siehe zusätzliche Informationen).

Erhöht

QiskitError – wenn die Eingabedaten ungültig sind.

Weitere Informationen:

Der dims kwarg kann None, eine Ganzzahl oder eine Iterable von Ganzzahlen sein.

  • Iterable - die Dimensionen der Teilsysteme sind die Werte in der Liste, wobei die Gesamtzahl der Teilsysteme durch die Länge der Liste gegeben ist.
  • Int oder None – die Länge des Eingabevektors gibt die Gesamtdimension des Zustands an. Handelt es sich um eine Zweierpotenz, wird der Zustand als N-Qubit-Zustand initialisiert. Wenn es sich nicht um eine Zweierpotenz handelt, verfügt der Zustand über ein einziges d-dimensionales Teilsystem.

Attribute

atol

Standardwert: 1e-08

data

Daten zurücksenden.

dim

Rückgabe der gesamten Zustandsgröße.

num_qubits

Gibt die Anzahl der Qubits zurück, wenn es sich um einen N-Qubit-Zustand handelt, andernfalls None.

rtol

Standardwert: 1e-05

settings

Einstellungen zurückgeben.


Methoden

conjugate

conjugate()

GitHub

Gibt die Konjugierte des Operators zurück.

Rückgabetyp

Zustandsvektor

copy

copy()

GitHub

Erstellen Sie eine Kopie des aktuellen Operators.

dims

dims(qargs=None)

GitHub

Rückgabe eines Tupels der Eingabedimension für die angegebenen Teilsysteme.

draw

draw(output=None, **drawer_args)

GitHub

Gibt eine Visualisierung des Zustandsvektors zurück.

repr : ASCII TextMatrix des Staates __repr__.

text : ASCII TextMatrix, der in der Konsole ausgedruckt werden kann.

latex : Ein IPython-Latex-Objekt für die Anzeige in Jupyter-Notebooks.

latex_quelle : Roher, nicht kompilierter ASCII-Quelltext zur Erzeugung eines Arrays mit LaTeX.

qsphere : Matplotlib Abbildung, Rendering des Zustandsvektors mit plot_state_qsphere().

hinton : Matplotlib Abbildung, Darstellung des Zustandsvektors mit plot_state_hinton().

bloch : Matplotlib figure, Rendering des Zustandsvektors mit plot_bloch_multivector().

stadt : Matplotlib Abbildung, Rendering des Zustandsvektors mit plot_state_city().

paulivec : Matplotlib Abbildung, Rendering des Zustandsvektors mit plot_state_paulivec().

Parameter

  • output (str) – Wählen Sie die Ausgabemethode, mit der der Zustand gezeichnet werden soll. Gültige Auswahlmöglichkeiten sind repr, text, latex, latex_source, qsphere, hinton, bloch, city oder paulivec. Standard ist repr. Die Voreinstellung kann durch Hinzufügen der Zeile state_drawer = <default> zu ~/.qiskit/settings.conf unter [default] geändert werden.
  • drawer_args - Argumente, die direkt an die entsprechende Zeichenfunktion oder den Konstruktor ( TextMatrix( ), array_to_latex(), plot_state_qsphere(), plot_state_hinton() oder plot_bloch_multivector()) übergeben werden. Siehe die Dokumentation der jeweiligen Funktion unter qiskit.visualization.

Rückgabe

matplotlib.Figure oder str oder TextMatrix oder IPython.display.Latex: Zeichnung des Zustandsvektors.

Erhöht

ValueError - wenn eine ungültige Ausgabemethode gewählt wird.

Beispiele

Plot eines der Bell-Staaten

from numpy import sqrt
from qiskit.quantum_info import Statevector
sv=Statevector([1/sqrt(2), 0, 0, -1/sqrt(2)])
sv.draw(output='hinton')
Ausgabe des vorherigen Codes.

equiv

equiv(other, rtol=None, atol=None)

GitHub

Gibt True zurück, wenn der andere als Zustandsvektor bis zur globalen Phase äquivalent ist.

Anmerkung

Wenn other kein Statevector ist, aber zur Initialisierung eines Statevector-Objekts verwendet werden kann, wird geprüft, ob Statevector(other) dem aktuellen Statevector bis zur globalen Phase entspricht.

Parameter

  • other (Statevector) – ein Objekt, aus dem eine Statevector konstruiert werden kann.
  • rtol (float) – relativer Toleranzwert zum Vergleich.
  • atol (float) – absoluter Toleranzwert zum Vergleich.

Rückgabe

Wahr, wenn die Zustandsvektoren bis zur globalen Phase äquivalent sind.

Rückgabetyp

bool

evolve

evolve(other, qargs=None)

GitHub

Entwickeln Sie einen Quantenzustand durch den Operator.

Parameter

Rückgabe

den Ausgangsquantenzustand.

Rückgabetyp

Zustandsvektor

Erhöht

QiskitError – wenn die Dimension des Operators nicht mit den angegebenen Dimensionen des Statevector-Subsystems übereinstimmt.

expand

expand(other)

GitHub

Rückgabe des Tensorprodukts state other ⊗ self.

Parameter

other (Statevector) – ein Quantenzustandsobjekt.

Rückgabe

das Tensorprodukt Zustand andere ⊗ selbst.

Rückgabetyp

Zustandsvektor

Erhöht

QiskitError – sofern „anderes“ kein Quantenzustand ist.

expectation_value

expectation_value(oper, qargs=None)

GitHub

Berechnen Sie den Erwartungswert eines Operators.

Parameter

  • oper (Operator) – ein Operator zur Auswertung von expval of.
  • qargs (None or list) – teilsysteme, auf die der Operator anzuwenden ist.

Rückgabe

den Erwartungswert.

Rückgabetyp

Komplex

from_circuit

classmethod from_circuit(circuit, ignore_set_layout=False)

GitHub

Erstellen Sie einen Zustandsvektor aus einem Quantenschaltkreis.

Parameter

  • circuit (QuantumCircuit) – Ein Quantenschaltkreis
  • ignore_set_layout (bool) – Wenn auf gesetzt True, wird das Layout der Eingabe ignoriert circuit , sofern eines festgelegt ist. Standardwert ist False.

Rückgabe

Der Zustandsvektor, der durch Anwendung der Schaltung auf den vollständig aus Nullen bestehenden Eingangsstatus erhalten wird.

Rückgabetyp

Zustandsvektor

Beispiel

Erstellen Sie einen Zustandsvektor aus einer transpilierten Schaltung:

from qiskit import QuantumCircuit, transpile
from qiskit.quantum_info import Statevector
from qiskit.providers.basic_provider import BasicSimulator

qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.swap(1, 2)

backend = BasicSimulator()
transpiled1 = transpile(qc, backend, optimization_level=0)
transpiled2 = transpile(qc, backend, optimization_level=2)

# Get statevectors accounting for layout changes
sv1 = Statevector.from_circuit(transpiled1)
sv2 = Statevector.from_circuit(transpiled2)

# These will be equivalent up to global phase
print(sv1.equiv(sv2))  # True

from_instruction

classmethod from_instruction(instruction)

GitHub

Gibt den Ausgangszustandsvektor einer Anweisung zurück.

Der Zustandsvektor wird im Zustand ∣0,…,0⟩|{0,\ldots,0}\rangle mit der gleichen Anzahl von Qubits initialisiert wie der Eingangsbefehl oder die Schaltung, die durch den Eingangsbefehl entwickelt wird, und der Ausgangszustandsvektor wird zurückgegeben.

Parameter

instruction (qiskit.circuit.Instruction orQuantumCircuit) – Befehl oder Schaltung

Rückgabe

Der endgültige Zustandsvektor.

Rückgabetyp

Zustandsvektor

Erhöht

QiskitError – wenn die Anweisung ungültige Anweisungen für die Zustandsvektor-Simulation enthält.

from_int

static from_int(i, dims)

GitHub

Rückgabe eines Zustandsvektors der Berechnungsgrundlage.

Parameter

  • i (int) – das Basiszustandselement.
  • dims (int ortuple orlist) – Die Teilsystemdimensionen des Zustandsvektors (siehe zusätzliche Informationen).

Rückgabe

Die Berechnungsgrundlage lautet ∣i⟩|i\rangle.

Rückgabetyp

Zustandsvektor

Weitere Informationen:

Die dims kwarg kann eine ganze Zahl oder eine Iterable von ganzen Zahlen sein.

  • Iterable - die Dimensionen der Teilsysteme sind die Werte in der Liste, wobei die Gesamtzahl der Teilsysteme durch die Länge der Liste gegeben ist.
  • Int - die ganze Zahl gibt die Gesamtgröße des Zustands an. Wenn es eine Zweierpotenz ist, wird der Zustand als N-Qubit-Zustand initialisiert. Wenn es keine Zweierpotenz ist, hat der Zustand ein einziges d-dimensionales Teilsystem.

from_label

classmethod from_label(label)

GitHub

Gibt ein Tensorprodukt von Pauli X,Y,Z-Eigenzuständen zurück.

Bezeichnung (Label)
Zustandsvektor
"0"[1,0][1, 0]
"1"[0,1][0, 1]
"+"[1/2,1/2][1 / \sqrt{2}, 1 / \sqrt{2}]
"-"[1/2,−1/2][1 / \sqrt{2}, -1 / \sqrt{2}]
"r"[1/2,i/2][1 / \sqrt{2}, i / \sqrt{2}]
"l"[1/2,−i/2][1 / \sqrt{2}, -i / \sqrt{2}]

Parameter

label (string) – eine Kennung für einen Eigenzustands-String-Ket (zulässige Werte siehe Tabelle).

Rückgabe

Der Basisvektor des N-Qubit-Grundzustands.

Rückgabetyp

Zustandsvektor

Erhöht

QiskitError – wenn die Bezeichnung ungültige Zeichen enthält oder die Länge der Bezeichnung größer ist als eine explizit angegebene Anzahl von num_qubits.

inner

inner(other)

GitHub

Geben Sie das innere Produkt von self und other als ⟨self∣other⟩\langle self| other \rangle zurück.

Parameter

other (Statevector) – ein Quantenzustandsobjekt.

Rückgabe

das innere Produkt von Selbst und Anderem, ⟨self∣other⟩\langle self| other \rangle.

Rückgabetyp

np.complex128

Erhöht

QiskitError – sofern „Sonstiges“ kein Quantenzustand ist oder eine andere Dimension aufweist.

is_valid

is_valid(atol=None, rtol=None)

GitHub

Gibt True zurück, wenn ein Zustandsvektor die Norm 1 hat.

Parameter

Rückgabetyp

bool

measure

measure(qargs=None)

GitHub

Messung von Teilsystemen und Rückgabe des Ergebnisses und des Zustands nach der Messung.

Beachten Sie, dass diese Funktion den internen Zufallszahlengenerator QuantumStates für die Stichprobenziehung des Messergebnisses verwendet. Der RNG-Seed kann mit der seed() methode.

Parameter

qargs (list or None) – teilsysteme, für die Stichprobenmessungen durchgeführt werden sollen, falls keine, werden Stichprobenmessungen für alle Teilsysteme durchgeführt (Standard: keine).

Rückgabe

das Paar (outcome, state) , wobei outcome die

und state ist der kollabierte Zustand nach der Messung für das entsprechende Ergebnis.

Rückgabetyp

Tupel

probabilities

probabilities(qargs=None, decimals=None)

GitHub

Rückgabe des Subsystem-Messwahrscheinlichkeitsvektors.

Die Messwahrscheinlichkeiten beziehen sich auf die Messung in der Berechnungsbasis (diagonal).

Parameter

  • qargs (None or list) – subsysteme, für die Wahrscheinlichkeiten zurückgegeben werden sollen, wenn None, dann für alle Subsysteme (Standard: None).
  • decimals (None or int) – die Anzahl der Dezimalstellen zum Runden von Werten. Bei None wird nicht gerundet (Standard: None).

Rückgabe

Das Numpy-Vektor-Array der Wahrscheinlichkeiten.

Rückgabetyp

np.array

Beispiele

Betrachten wir einen 2-Qubit-Produktzustand ∣ψ⟩=∣+⟩⊗∣0⟩|\psi\rangle=|+\rangle\otimes|0\rangle.

from qiskit.quantum_info import Statevector

psi = Statevector.from_label('+0')

# Probabilities for measuring both qubits
probs = psi.probabilities()
print('probs: {}'.format(probs))

# Probabilities for measuring only qubit-0
probs_qubit_0 = psi.probabilities([0])
print('Qubit-0 probs: {}'.format(probs_qubit_0))

# Probabilities for measuring only qubit-1
probs_qubit_1 = psi.probabilities([1])
print('Qubit-1 probs: {}'.format(probs_qubit_1))
probs: [0.5 0.  0.5 0. ]
Qubit-0 probs: [1. 0.]
Qubit-1 probs: [0.5 0.5]

Wir können auch die Reihenfolge der Qubits in der Liste qargs vertauschen, um die Position des Qubits in der Ausgabe der Wahrscheinlichkeiten zu ändern

from qiskit.quantum_info import Statevector

psi = Statevector.from_label('+0')

# Probabilities for measuring both qubits
probs = psi.probabilities([0, 1])
print('probs: {}'.format(probs))

# Probabilities for measuring both qubits
# but swapping qubits 0 and 1 in output
probs_swapped = psi.probabilities([1, 0])
print('Swapped probs: {}'.format(probs_swapped))
probs: [0.5 0.  0.5 0. ]
Swapped probs: [0.5 0.5 0.  0. ]

probabilities_dict

probabilities_dict(qargs=None, decimals=None)

GitHub

Gibt das Wörterbuch der Messwahrscheinlichkeiten des Subsystems zurück.

Die Messwahrscheinlichkeiten beziehen sich auf die Messung in der Berechnungsbasis (diagonal).

Diese Wörterbuchdarstellung verwendet eine Ket-ähnliche Notation, bei der die Wörterbuchschlüssel qudit-Strings für die Subsystem-Basisvektoren sind. Wenn ein Teilsystem eine Dimension von mehr als 10 hat, werden Kommata zwischen den ganzen Zahlen eingefügt, damit die Teilsysteme unterschieden werden können.

Parameter

  • qargs (None or list) – subsysteme, für die Wahrscheinlichkeiten zurückgegeben werden sollen, wenn None, dann für alle Subsysteme (Standard: None).
  • decimals (None or int) – die Anzahl der Dezimalstellen zum Runden von Werten. Bei None wird nicht gerundet (Standard: None).

Rückgabe

Die Messwahrscheinlichkeiten in der Form von dict (ket).

Rückgabetyp

dict

purity

purity()

GitHub

Gibt die Reinheit des Quantenzustands zurück.

Rückgabetyp

float64

reset

reset(qargs=None)

GitHub

Zurücksetzen des Zustands oder der Subsysteme auf den 0-Zustand.

Parameter

qargs (list or None) – subsysteme, die zurückgesetzt werden sollen; bei None werden alle Subsysteme auf ihren 0-Zustand zurückgesetzt (Standard: None).

Rückgabe

den Reset-Zustand.

Rückgabetyp

Zustandsvektor

Weitere Informationen:

Wenn alle Teilsysteme zurückgesetzt werden, wird dadurch der Grundzustand aller Teilsysteme wiederhergestellt. Wenn nur einige Teilsysteme zurückgesetzt werden, führt diese Funktion eine Messung an diesen Teilsystemen durch und entwickelt die Teilsysteme so weiter, dass die nach der Messung kollabierten Zustände in den 0-Zustand gedreht werden. Der RNG-Startwert für diese Stichprobe kann mithilfe der seed() Methode festgelegt werden.

reverse_qargs

reverse_qargs()

GitHub

Rückgabe eines Zustandsvektors mit umgekehrter Subsystemreihenfolge.

Für einen Tensorproduktzustand ist dies gleichbedeutend mit der Umkehrung der Reihenfolge der Tensorproduktteilsysteme. Bei einem Zustandsvektor ∣ψ⟩=∣ψn−1⟩⊗...⊗∣ψ0⟩|\psi \rangle = |\psi_{n-1} \rangle \otimes ... \otimes |\psi_0 \rangle lautet der zurückgegebene Zustandsvektor ∣ψ0⟩⊗...⊗∣ψn−1⟩|\psi_{0} \rangle \otimes ... \otimes |\psi_{n-1} \rangle.

Rückgabe

den Zustandsvektor mit umgekehrter Reihenfolge der Teilsysteme.

Rückgabetyp

Zustandsvektor

sample_counts

sample_counts(shots, qargs=None)

GitHub

Probieren Sie ein Diktat von Qubit-Messergebnissen in der Berechnungsgrundlage.

Parameter

  • shots (int) – anzahl der zu erzeugenden Proben.
  • qargs (None or list) – teilsysteme, für die Stichprobenmessungen durchgeführt werden sollen, falls keine, werden Stichprobenmessungen für alle Teilsysteme durchgeführt (Standard: keine).

Rückgabe

wörterbuch der Stichprobenzählungen.

Rückgabetyp

Option 'counts'

Weitere Informationen:

Diese Funktion nimmt Stichproben von Messergebnissen unter Verwendung des Maßes probabilities() für den aktuellen Zustand und qargs. Sie führt die Messung nicht durch, so dass der aktuelle Zustand nicht verändert wird.

Der Startwert für den bei der Stichprobenziehung verwendeten Zufallszahlengenerator kann mithilfe der Methode seed() state auf einen festen Wert gesetzt werden.

sample_memory

sample_memory(shots, qargs=None)

GitHub

Probieren Sie eine Liste von Qubit-Messergebnissen in der Berechnungsgrundlage aus.

Parameter

  • shots (int) – anzahl der zu erzeugenden Proben.
  • qargs (None or list) – teilsysteme, für die Stichprobenmessungen durchgeführt werden sollen, falls keine, werden Stichprobenmessungen für alle Teilsysteme durchgeführt (Standard: keine).

Rückgabe

Liste der erfassten Zählwerte in der Reihenfolge ihrer Erfassung.

Rückgabetyp

np.array

Weitere Informationen:

Diese Funktion nimmt Stichproben von Messergebnissen unter Verwendung des Maßes probabilities() für den aktuellen Zustand und qargs. Sie führt die Messung nicht durch, so dass der aktuelle Zustand nicht verändert wird.

Der Startwert für den bei der Stichprobenziehung verwendeten Zufallszahlengenerator kann mithilfe der Methode seed() state auf einen festen Wert gesetzt werden.

seed

seed(value=None)

GitHub

Setzen Sie den Seed für den Quantenzustand RNG.

tensor

tensor(other)

GitHub

Rückgabe des Tensorprodukts Zustand self ⊗ other.

Parameter

other (Statevector) – ein Quantenzustandsobjekt.

Rückgabe

der Tensorproduktoperator selbst ⊗ andere.

Rückgabetyp

Zustandsvektor

Erhöht

QiskitError – sofern „anderes“ kein Quantenzustand ist.

to_dict

to_dict(decimals=None)

GitHub

Konvertiert den Zustandsvektor in Wörterbuchform.

Diese Wörterbuchdarstellung verwendet eine Ket-ähnliche Notation, bei der die Wörterbuchschlüssel qudit-Strings für die Subsystem-Basisvektoren sind. Wenn ein Teilsystem eine Dimension von mehr als 10 hat, werden Kommata zwischen den ganzen Zahlen eingefügt, damit die Teilsysteme unterschieden werden können.

Parameter

decimals (None or int) – die Anzahl der Dezimalstellen zum Runden von Werten. Bei None wird nicht gerundet (Standard: None).

Rückgabe

die Wörterbuchform des Zustandsvektors.

Rückgabetyp

dict

Beispiel

Die Ket-Form eines 2-Qubit-Zustandsvektors ∣ψ⟩=∣−⟩⊗∣0⟩|\psi\rangle = |-\rangle\otimes |0\rangle

from qiskit.quantum_info import Statevector

psi = Statevector.from_label('-0')
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '10': (-0.7071067811865475+0j)}

Für Nicht-Qubit-Subsysteme kann der ganzzahlige Bereich von 0 bis 9 reichen. Zum Beispiel in einem Qutrit-System

import numpy as np
from qiskit.quantum_info import Statevector

vec = np.zeros(9)
vec[0] = 1 / np.sqrt(2)
vec[-1] = 1 / np.sqrt(2)
psi = Statevector(vec, dims=(3, 3))
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '22': (0.7071067811865475+0j)}

Für große Teilsystemdimensionen sind Begrenzungszeichen erforderlich. Das folgende Beispiel bezieht sich auf ein 20-dimensionales System, das aus einem Qubit und einem 10-dimensionalen Qudit besteht.

import numpy as np
from qiskit.quantum_info import Statevector

vec = np.zeros(2 * 10)
vec[0] = 1 / np.sqrt(2)
vec[-1] = 1 / np.sqrt(2)
psi = Statevector(vec, dims=(2, 10))
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '91': (0.7071067811865475+0j)}

to_operator

to_operator()

GitHub

Zustand in einen rank-1 Projektor-Operator umwandeln

Rückgabetyp

Operator

trace

trace()

GitHub

Gibt die Spur des Quantenzustands als Dichtematrix zurück.

Rückgabetyp

float64

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.