DensityMatrix
class qiskit.quantum_info.DensityMatrix(data, dims=None)
Basen: QuantumState, TolerancesMixin
DensityMatrix klasse
Initialisieren eines Dichtematrixobjekts.
Parameter
- data (np.ndarray | list |QuantumCircuit |circuit.instruction.Instruction | QuantumState) – Ein Zustandsvektor, ein Quantenbefehl oder ein Objekt mit einer
to_operatoroderto_matrixMethode, aus der die Dichtematrix konstruiert werden kann. Ist ein Vektor gegeben, so wird die Dichtematrix als Projektor dieses Vektors konstruiert. Bei einer Quantenanweisung wird die Dichtematrix unter der Annahme konstruiert, dass alle Qubits im 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 führende Dimension der Eingabematrix gibt die Gesamtdimension der Dichtematrix 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.
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 der Dichtematrix 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 der Dichtematrix mit plot_state_qsphere().
hinton : Matplotlib Abbildung, Rendering der Dichtematrix mit plot_state_hinton().
bloch : Matplotlib Abbildung, Darstellung der Dichtematrix mit plot_bloch_multivector().
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 oder bloch. 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: Darstellung der Dichtematrix.
Erhöht
ValueError - wenn eine ungültige Ausgabemethode gewählt wird.
evolve
evolve(other, qargs=None)
Einen Quantenzustand durch einen Operator weiterentwickeln.
Parameter
- other (Operator | QuantumChannel |circuit.instruction.Instruction |QuantumCircuit) – Der Betreiber, der sich weiterentwickeln wird.
- qargs (list[int] | None) – eine Liste von QuantumState Subsystempositionen, auf die der Operator angewendet werden soll.
Rückgabe
Die Matrix der Ausgabedichte.
Erhöht
QiskitError – wenn die Abmessungen des Betreibers nicht mit den angegebenen Abmessungen des Subsystems „ QuantumState “ übereinstimmen.
Rückgabetyp
expand
expand(other)
Rückgabe des Tensorprodukts state other ⊗ self.
Parameter
other (DensityMatrix) – 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.
- qargs (None or list) – teilsysteme, auf die der Operator anzuwenden ist.
Rückgabe
den Erwartungswert.
Rückgabetyp
from_instruction
classmethod from_instruction(instruction)
Rückgabe der Ausgangsdichtematrix einer Anweisung.
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 (circuit.instruction.Instruction |QuantumCircuit) – Befehl oder Schaltung
Rückgabe
Die endgültige Dichtematrix.
Erhöht
QiskitError – wenn die Anweisung ungültige Anweisungen für die Dichtematrix-Simulation enthält.
Rückgabetyp
from_int
static from_int(i, dims)
Rückgabe einer rechnerischen Basiszustands-Dichtematrix.
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:
Der 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
Die N-Qubit-Basiszustandsdichte-Matrix.
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.
is_valid
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
partial_transpose
partial_transpose(qargs)
Rückgabe einer teilweise transponierten Dichtematrix.
Parameter
qargs (list) – Die umzusetzenden Teilsysteme.
Rückgabe
Die teilweise transponierte Dichtematrix.
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 der Werte. 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 mit , .
from qiskit.quantum_info import DensityMatrix
rho = DensityMatrix.from_label('+0')
# Probabilities for measuring both qubits
probs = rho.probabilities()
print('probs: {}'.format(probs))
# Probabilities for measuring only qubit-0
probs_qubit_0 = rho.probabilities([0])
print('Qubit-0 probs: {}'.format(probs_qubit_0))
# Probabilities for measuring only qubit-1
probs_qubit_1 = rho.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 DensityMatrix
rho = DensityMatrix.from_label('+0')
# Probabilities for measuring both qubits
probs = rho.probabilities([0, 1])
print('probs: {}'.format(probs))
# Probabilities for measuring both qubits
# but swapping qubits 0 and 1 in output
probs_swapped = rho.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 der Werte. 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 (Default: 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 Weiterentwicklung anhand des Zurücksetzens SuperOp der zurückgesetzten Teilsysteme durch.
reverse_qargs
reverse_qargs()
Gibt eine DensityMatrix mit umgekehrter Subsystemreihenfolge zurück.
Für einen Tensorproduktzustand ist dies gleichbedeutend mit der Umkehrung der Reihenfolge der Tensorproduktteilsysteme. Bei einer Dichtematrix lautet der zurückgegebene Zustand .
Rückgabe
den Zustand 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 (DensityMatrix) – ein Quantenzustandsobjekt.
Rückgabe
der Tensorproduktoperator selbst ⊗ andere.
Rückgabetyp
Erhöht
QiskitError – sofern „anderes“ kein Quantenzustand ist.
to_dict
to_dict(decimals=None)
Umwandlung der Dichtematrix in die 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 der Werte. Bei None wird nicht gerundet (Standard: None).
Rückgabe
die Wörterbuchform der DensityMatrix.
Rückgabetyp
Beispiele
Die Ket-Form einer 2-Qubit-Dichtematrix
from qiskit.quantum_info import DensityMatrix
rho = DensityMatrix.from_label('-0')
print(rho.to_dict()){
'00|00': (0.4999999999999999+0j),
'10|00': (-0.4999999999999999-0j),
'00|10': (-0.4999999999999999+0j),
'10|10': (0.4999999999999999+0j)
}Für Nicht-Qubit-Subsysteme kann der Ganzzahlbereich von 0 bis 9 reichen. Zum Beispiel in einem Qutrit-System
import numpy as np
from qiskit.quantum_info import DensityMatrix
mat = np.zeros((9, 9))
mat[0, 0] = 0.25
mat[3, 3] = 0.25
mat[6, 6] = 0.25
mat[-1, -1] = 0.25
rho = DensityMatrix(mat, dims=(3, 3))
print(rho.to_dict()){'00|00': (0.25+0j), '10|10': (0.25+0j), '20|20': (0.25+0j), '22|22': (0.25+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 DensityMatrix
mat = np.zeros((2 * 10, 2 * 10))
mat[0, 0] = 0.5
mat[-1, -1] = 0.5
rho = DensityMatrix(mat, dims=(2, 10))
print(rho.to_dict()){'00|00': (0.5+0j), '91|91': (0.5+0j)}to_operator
to_statevector
to_statevector(atol=None, rtol=None)
Rückgabe eines Zustandsvektors aus einer reinen Dichtematrix.
Parameter
- atol (float) – Absolute Toleranz für die Überprüfung der Vorgangsgültigkeit.
- rtol (float) – Relative Toleranz für die Prüfung der Vorgangsgültigkeit.
Rückgabe
Der entsprechende Zustandsvektor der reinen Dichtematrix.
Entspricht dem Eigenvektor des einzigen Eigenwerts, der nicht Null ist.
Rückgabetyp
Erhöht
QiskitError – wenn der Zustand nicht rein ist.