Skip to main content
IBM Quantum Platform

DensityMatrix

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

GitHub

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_operator oder to_matrix Methode, 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.
  • Int oder None - 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

conjugate()

GitHub

Gibt die Konjugierte der Dichtematrix zurück.

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 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.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: Darstellung der Dichtematrix.

Erhöht

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

evolve

evolve(other, qargs=None)

GitHub

Einen Quantenzustand durch einen Operator weiterentwickeln.

Parameter

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

DensityMatrix

expand

expand(other)

GitHub

Rückgabe des Tensorprodukts state other ⊗ self.

Parameter

other (DensityMatrix) – ein Quantenzustandsobjekt.

Rückgabe

das Tensorprodukt Zustand andere ⊗ selbst.

Rückgabetyp

DensityMatrix

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.
  • qargs (None or list) – teilsysteme, auf die der Operator anzuwenden ist.

Rückgabe

den Erwartungswert.

Rückgabetyp

Komplex

from_instruction

classmethod from_instruction(instruction)

GitHub

Rückgabe der Ausgangsdichtematrix einer Anweisung.

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 (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

DensityMatrix

from_int

static from_int(i, dims)

GitHub

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 ∣i⟩ ⁣⟨i∣|i\rangle\!\langle i|.

Rückgabetyp

DensityMatrix

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)

GitHub

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

Bezeichnung (Label)
Zustandsvektor
"0"(1000)\begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}
"1"(0001)\begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix}
"+"12(1111)\frac{1}{2}\begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix}
"-"12(1−1−11)\frac{1}{2}\begin{pmatrix} 1 & -1 \\ -1 & 1 \end{pmatrix}
"r"12(1−ii1)\frac{1}{2}\begin{pmatrix} 1 & -i \\ i & 1 \end{pmatrix}
"l"12(1i−i1)\frac{1}{2}\begin{pmatrix} 1 & i \\ -i & 1 \end{pmatrix}

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

DensityMatrix

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

is_valid(atol=None, rtol=None)

GitHub

Gibt True zurück, wenn Spur 1 und positiv semidefinit.

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

partial_transpose

partial_transpose(qargs)

GitHub

Rückgabe einer teilweise transponierten Dichtematrix.

Parameter

qargs (list) – Die umzusetzenden Teilsysteme.

Rückgabe

Die teilweise transponierte Dichtematrix.

Rückgabetyp

DensityMatrix

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 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 ρ=ρ1⊗ρ0\rho=\rho_1\otimes\rho_0 mit ρ1=∣+⟩ ⁣⟨+∣\rho_1=|+\rangle\!\langle+|, ρ0=∣0⟩ ⁣⟨0∣\rho_0=|0\rangle\!\langle0|.

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)

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 der Werte. 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.

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 (Default: None).

Rückgabe

den Reset-Zustand.

Rückgabetyp

DensityMatrix

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

GitHub

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 ρ=ρn−1⊗...⊗ρ0\rho = \rho_{n-1} \otimes ... \otimes \rho_0 lautet der zurückgegebene Zustand ρ0⊗...⊗ρn−1\rho_0 \otimes ... \otimes \rho_{n-1}.

Rückgabe

den Zustand mit umgekehrter Reihenfolge der Teilsysteme.

Rückgabetyp

DensityMatrix

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 (DensityMatrix) – ein Quantenzustandsobjekt.

Rückgabe

der Tensorproduktoperator selbst ⊗ andere.

Rückgabetyp

DensityMatrix

Erhöht

QiskitError – sofern „anderes“ kein Quantenzustand ist.

to_dict

to_dict(decimals=None)

GitHub

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

dict

Beispiele

Die Ket-Form einer 2-Qubit-Dichtematrix rho=∣−⟩ ⁣⟨−∣⊗∣0⟩ ⁣⟨0∣rho = |-\rangle\!\langle -|\otimes |0\rangle\!\langle 0|

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_operator()

GitHub

In Operator umwandeln

Rückgabetyp

Operator

to_statevector

to_statevector(atol=None, rtol=None)

GitHub

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

Zustandsvektor

Erhöht

QiskitError – wenn der Zustand nicht rein ist.

trace

trace()

GitHub

Gibt die Spur der Dichtematrix zurück.

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