Zustandsvektor
class qiskit.quantum_info.Statevector(data, dims=None)
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, einOperatormit nur einer Spalte oder einQuantumCircuitoder 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.IntoderNone– 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
copy
dims
draw
draw(output=None, **drawer_args)
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.confunter[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')
equiv
equiv(other, rtol=None, atol=None)
Gibt True zurück, wenn der andere als Zustandsvektor bis zur globalen Phase äquivalent ist.
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
Statevectorkonstruiert 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
evolve
evolve(other, qargs=None)
Entwickeln Sie einen Quantenzustand durch den Operator.
Parameter
- other (Operator |QuantumCircuit |circuit.Instruction) – Der Betreiber, der sich weiterentwickeln wird.
- qargs (list) – eine Liste von Statevector-Subsystempositionen, auf die der Operator anzuwenden ist.
Rückgabe
den Ausgangsquantenzustand.
Rückgabetyp
Erhöht
QiskitError – wenn die Dimension des Operators nicht mit den angegebenen Dimensionen des Statevector-Subsystems übereinstimmt.
expand
expand(other)
Rückgabe des Tensorprodukts state other ⊗ self.
Parameter
other (Statevector) – ein Quantenzustandsobjekt.
Rückgabe
das Tensorprodukt Zustand andere ⊗ selbst.
Rückgabetyp
Erhöht
QiskitError – sofern „anderes“ kein Quantenzustand ist.
expectation_value
expectation_value(oper, qargs=None)
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
from_circuit
classmethod from_circuit(circuit, ignore_set_layout=False)
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 ignoriertcircuit, sofern eines festgelegt ist. Standardwert istFalse.
Rückgabe
Der Zustandsvektor, der durch Anwendung der Schaltung auf den vollständig aus Nullen bestehenden Eingangsstatus erhalten wird.
Rückgabetyp
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)) # Truefrom_instruction
classmethod from_instruction(instruction)
Gibt den Ausgangszustandsvektor einer Anweisung zurück.
Der Zustandsvektor wird im Zustand 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
Erhöht
QiskitError – wenn die Anweisung ungültige Anweisungen für die Zustandsvektor-Simulation enthält.
from_int
static from_int(i, dims)
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 .
Rückgabetyp
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)
Gibt ein Tensorprodukt von Pauli X,Y,Z-Eigenzuständen zurück.
Bezeichnung (Label) | Zustandsvektor |
|---|---|
"0" | |
"1" | |
"+" | |
"-" | |
"r" | |
"l" |
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
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)
Geben Sie das innere Produkt von self und other als zurück.
Parameter
other (Statevector) – ein Quantenzustandsobjekt.
Rückgabe
das innere Produkt von Selbst und Anderem, .
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)
Gibt True zurück, wenn ein Zustandsvektor die Norm 1 hat.
Parameter
Rückgabetyp
measure
measure(qargs=None)
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
probabilities
probabilities(qargs=None, decimals=None)
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 .
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)
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
purity
reset
reset(qargs=None)
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
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()
Rückgabe eines Zustandsvektors mit umgekehrter Subsystemreihenfolge.
Für einen Tensorproduktzustand ist dies gleichbedeutend mit der Umkehrung der Reihenfolge der Tensorproduktteilsysteme. Bei einem Zustandsvektor lautet der zurückgegebene Zustandsvektor .
Rückgabe
den Zustandsvektor mit umgekehrter Reihenfolge der Teilsysteme.
Rückgabetyp
sample_counts
sample_counts(shots, qargs=None)
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
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)
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
tensor
tensor(other)
Rückgabe des Tensorprodukts Zustand self ⊗ other.
Parameter
other (Statevector) – ein Quantenzustandsobjekt.
Rückgabe
der Tensorproduktoperator selbst ⊗ andere.
Rückgabetyp
Erhöht
QiskitError – sofern „anderes“ kein Quantenzustand ist.
to_dict
to_dict(decimals=None)
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
Beispiel
Die Ket-Form eines 2-Qubit-Zustandsvektors
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)}