Skip to main content
IBM Quantum Platform

DensityMatrix

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

GitHub

Bases : QuantumState, TolerancesMixin

DensityMatrix classe

Initialise un objet matrice de densité.

Paramètres

  • data (np.ndarray | list |QuantumCircuit |circuit.instruction.Instruction | QuantumState) – Un vecteur d'état, une instruction quantique ou un objet doté d'une to_operator méthode ou to_matrix à partir duquel la matrice de densité peut être construite. Si l'on considère un vecteur, la matrice de densité est définie comme le projecteur de ce vecteur. Dans le cas d'une instruction quantique, la matrice de densité est construite en supposant que tous les qubits sont initialisés à l'état zéro.
  • dims (int |tuple |list | None) – La dimension du sous-système de l'état (voir informations complémentaires).

Augmentations

QiskitError – si les données saisies ne sont pas valides.

Renseignements supplémentaires :

Le kwarg dims peut être None, un entier ou un itérable d'entiers.

  • Iterable - les dimensions du sous-système sont les valeurs de la liste, le nombre total de sous-systèmes étant donné par la longueur de la liste.
  • Int ou None - la dimension principale de la matrice d'entrée spécifie la dimension totale de la matrice de densité. S'il s'agit d'une puissance de deux, l'état sera initialisé comme un état à N qubits. S'il ne s'agit pas d'une puissance de deux, l'État aura un seul sous-système d-dimensionnel.

Attributs

atol

Valeur par défaut : 1e-08

data

Données de retour.

dim

Retourner la dimension totale de l'état.

num_qubits

Renvoie le nombre de qubits s'il s'agit d'un état à N qubits ou Aucun dans le cas contraire.

rtol

Valeur par défaut : 1e-05

settings

Paramètres de retour.


Méthodes

conjugate

conjugate()

GitHub

Renvoie le conjugué de la matrice de densité.

copy

copy()

GitHub

Faire une copie de l'opérateur actuel.

dims

dims(qargs=None)

GitHub

Retourne un ensemble de dimensions d'entrée pour les sous-systèmes spécifiés.

draw

draw(output=None, **drawer_args)

GitHub

Affiche une représentation graphique de la matrice de densité.

repr : ASCII TextMatrix de l'État __repr__.

texte : ASCII TextMatrix qui peut être imprimé dans la console.

latex : Un objet IPython Latex à afficher dans les carnets Jupyter.

latex_source : Source ASCII brute, non compilée, pour générer un tableau à l'aide de LaTeX.

qsphere : Matplotlib figure, rendu de la matrice de densité en utilisant plot_state_qsphere().

hinton : Matplotlib figure, rendu de la matrice de densité en utilisant plot_state_hinton().

bloch : Matplotlib figure, rendu de la matrice de densité en utilisant plot_bloch_multivector().

Paramètres

  • output (str) – Sélectionnez la méthode de sortie à utiliser pour dessiner l'état. Les choix valables sont repr, text, latex, latex_source, qsphere, hinton ou bloch. La valeur par défaut est repr. La valeur par défaut peut être modifiée en ajoutant la ligne state_drawer = <default> à ~/.qiskit/settings.conf sous [default].
  • drawer_args - Arguments à passer directement à la fonction de dessin ou au constructeur correspondant ( TextMatrix( ), array_to_latex(), plot_state_qsphere(), plot_state_hinton() ou plot_bloch_multivector()). Voir la fonction concernée sur qiskit.visualization pour la documentation de cette fonction.

Retours

matplotlib.Figure ou str ou TextMatrix ou IPython.display.Latex: Représentation de la matrice de densité.

Augmentations

ValueError - lorsqu'une méthode de sortie non valide est sélectionnée.

evolve

evolve(other, qargs=None)

GitHub

Faire évoluer un état quantique à l'aide d'un opérateur.

Paramètres

Retours

La matrice de densité de sortie.

Augmentations

QiskitError – si les dimensions de l'opérateur ne correspondent pas à celles du sous-système « QuantumState » spécifiées.

Type de retour

DensityMatrix

expand

expand(other)

GitHub

Retourne le produit tensoriel état other ⊗ self.

Paramètres

other (DensityMatrix) – un objet d'état quantique.

Retours

le produit tensoriel état autre ⊗ self.

Type de retour

DensityMatrix

Augmentations

QiskitError – si « autre » n'est pas un état quantique.

expectation_value

expectation_value(oper, qargs=None)

GitHub

Calculer la valeur espérée d'un opérateur.

Paramètres

  • oper (Operator) – un opérateur pour évaluer expval.
  • qargs (None or list) – les sous-systèmes sur lesquels appliquer l'opérateur.

Retours

la valeur attendue.

Type de retour

complexe

from_instruction

classmethod from_instruction(instruction)

GitHub

Renvoie la matrice de densité de sortie d'une instruction.

Le vecteur d'état est initialisé dans l'état 0,,0|{0,\ldots,0}\rangle du même nombre de qubits que l'instruction ou le circuit d'entrée, évolué par l'instruction d'entrée, et le vecteur d'état de sortie est renvoyé.

Paramètres

instruction (circuit.instruction.Instruction |QuantumCircuit) – instruction ou circuit

Retours

La matrice de densité finale.

Augmentations

QiskitError – si l'instruction contient des instructions non valides pour la simulation de la matrice de densité.

Type de retour

DensityMatrix

from_int

static from_int(i, dims)

GitHub

Retourne une matrice de densité d'état de base de calcul.

Paramètres

  • i (int) – l'élément d'état de base.
  • dims (int ortuple orlist) – Les dimensions du sous-système du vecteur d'état (voir informations complémentaires).

Retours

L'état de base de calcul i ⁣i|i\rangle\!\langle i|.

Type de retour

DensityMatrix

Renseignements supplémentaires :

Le kwarg dims peut être un entier ou un itérable d'entiers.

  • Iterable - les dimensions du sous-système sont les valeurs de la liste, le nombre total de sous-systèmes étant donné par la longueur de la liste.
  • Int - l'entier spécifie la dimension totale de l'état. S'il s'agit d'une puissance de deux, l'état sera initialisé comme un état à N qubits. S'il ne s'agit pas d'une puissance de deux, l'État aura un seul sous-système d-dimensionnel.

from_label

classmethod from_label(label)

GitHub

Retourne un produit tensoriel des états propres de Pauli X,Y,Z.

Libellé
Vecteur d'état
"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(1111)\frac{1}{2}\begin{pmatrix} 1 & -1 \\ -1 & 1 \end{pmatrix}
"r"12(1ii1)\frac{1}{2}\begin{pmatrix} 1 & -i \\ i & 1 \end{pmatrix}
"l"12(1ii1)\frac{1}{2}\begin{pmatrix} 1 & i \\ -i & 1 \end{pmatrix}

Paramètres

label (string) – une étiquette de chaîne de ket d'état propre (voir le tableau pour les valeurs autorisées).

Retours

La matrice de densité de l'état de base de N-qubits.

Type de retour

DensityMatrix

Augmentations

QiskitError – si l'étiquette contient des caractères non valides, ou si la longueur de l'étiquette dépasse le nombre de qubits explicitement spécifié num_qubits.

is_valid

is_valid(atol=None, rtol=None)

GitHub

Retourne True si la trace 1 est semi-définie positive.

measure

measure(qargs=None)

GitHub

Mesurer les sous-systèmes et renvoyer le résultat et l'état post-mesure.

Notez que cette fonction utilise le générateur de nombres aléatoires interne de QuantumStates pour échantillonner le résultat de la mesure. La graine RNG peut être définie à l'aide de la méthode seed() méthode.

Paramètres

qargs (list or None) – sous-systèmes pour lesquels les mesures doivent être échantillonnées; si aucun, les mesures de tous les sous-systèmes doivent être échantillonnées (valeur par défaut : aucun).

Retours

la paire (outcome, state)outcome est le

l'étiquette de la chaîne de caractères du résultat de la mesure, et state l'état post-mesure effondré pour le résultat correspondant.

Type de retour

bloc de données

partial_transpose

partial_transpose(qargs)

GitHub

Retourne la matrice de densité partiellement transposée.

Paramètres

qargs (list) – Les sous-systèmes à transposer.

Retours

La matrice de densité partiellement transposée.

Type de retour

DensityMatrix

probabilities

probabilities(qargs=None, decimals=None)

GitHub

Retourne le vecteur de probabilité de mesure du sous-système.

Les probabilités de mesure se rapportent à la mesure dans la base de calcul (diagonale).

Paramètres

  • qargs (None or list) – sous-systèmes pour lesquels les probabilités doivent être renvoyées, si aucun, elles doivent être renvoyées pour tous les sous-systèmes (par défaut : aucun).
  • decimals (None or int) – le nombre de décimales à arrondir. Si None, aucun arrondi n'est effectué (par défaut : None).

Retours

Le tableau de vecteurs Numpy des probabilités.

Type de retour

np.array

Exemples

Considérons un état produit à 2 qubits ρ=ρ1ρ0\rho=\rho_1\otimes\rho_0 avec ρ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]

Nous pouvons également permuter l'ordre des qubits dans la liste qargs pour modifier la position du qubit dans la sortie des probabilités

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

Retourne le dictionnaire des probabilités de mesure du sous-système.

Les probabilités de mesure se rapportent à la mesure dans la base de calcul (diagonale).

Cette représentation du dictionnaire utilise une notation de type Ket où les clés du dictionnaire sont des chaînes de caractères pour les vecteurs de base du sous-système. Si un sous-système a une dimension supérieure à 10, des virgules sont insérées entre les nombres entiers afin de pouvoir distinguer les sous-systèmes.

Paramètres

  • qargs (None or list) – sous-systèmes pour lesquels les probabilités doivent être renvoyées, si aucun, elles doivent être renvoyées pour tous les sous-systèmes (par défaut : aucun).
  • decimals (None or int) – le nombre de décimales à arrondir. Si None, aucun arrondi n'est effectué (par défaut : None).

Retours

Les probabilités de mesure sous forme de dict (ket).

Type de retour

dict

purity

purity()

GitHub

Renvoie la pureté de l'état quantique.

reset

reset(qargs=None)

GitHub

Réinitialiser l'état ou les sous-systèmes à l'état 0.

Paramètres

qargs (list or None) – sous-systèmes à réinitialiser, si Aucun, tous les sous-systèmes seront réinitialisés à l'état 0 (par défaut : Aucun).

Retours

l'état de réinitialisation.

Type de retour

DensityMatrix

Renseignements supplémentaires :

Si tous les sous-systèmes sont réinitialisés, cela rétablit l'état de base sur tous les sous-systèmes. Si seuls certains sous-systèmes sont réinitialisés, cette fonction effectuera une évolution à partir de la réinitialisation SuperOp de ces sous-systèmes.

reverse_qargs

reverse_qargs()

GitHub

Retourne un DensityMatrix avec l'ordre inversé des sous-systèmes.

Pour un produit tensoriel, cela revient à inverser l'ordre des sous-systèmes du produit tensoriel. Pour une matrice de densité ρ=ρn1...ρ0\rho = \rho_{n-1} \otimes ... \otimes \rho_0, l'état retourné sera ρ0...ρn1\rho_0 \otimes ... \otimes \rho_{n-1}.

Retours

l'État avec l'ordre inversé des sous-systèmes.

Type de retour

DensityMatrix

sample_counts

sample_counts(shots, qargs=None)

GitHub

Échantillonner une série de résultats de mesures de qubits dans la base de calcul.

Paramètres

  • shots (int) – le nombre d'échantillons à générer.
  • qargs (None or list) – sous-systèmes pour lesquels les mesures doivent être échantillonnées; si aucun, les mesures de tous les sous-systèmes doivent être échantillonnées (valeur par défaut : aucun).

Retours

dictionnaire des comptages échantillonnés.

Type de retour

Comptes

Information supplémentaires :

Cette fonction échantillonne les résultats des mesures en utilisant la mesure probabilities() pour l'état actuel et les qargs. Il ne met pas en œuvre la mesure, de sorte que l'état actuel n'est pas modifié.

La graine du générateur de nombres aléatoires utilisée pour l'échantillonnage peut être définie sur une valeur fixe à l'aide de la méthode seed() state.

sample_memory

sample_memory(shots, qargs=None)

GitHub

Échantillonner une liste de résultats de mesures de qubits dans la base de calcul.

Paramètres

  • shots (int) – le nombre d'échantillons à générer.
  • qargs (None or list) – sous-systèmes pour lesquels les mesures doivent être échantillonnées; si aucun, les mesures de tous les sous-systèmes doivent être échantillonnées (valeur par défaut : aucun).

Retours

liste des valeurs échantillonnées dans l'ordre où elles ont été relevées.

Type de retour

np.array

Information supplémentaires :

Cette fonction échantillonne les résultats des mesures en utilisant la mesure probabilities() pour l'état actuel et les qargs. Il ne met pas en œuvre la mesure, de sorte que l'état actuel n'est pas modifié.

La graine du générateur de nombres aléatoires utilisée pour l'échantillonnage peut être définie sur une valeur fixe à l'aide de la méthode seed() state.

seed

seed(value=None)

GitHub

Définir la graine pour le RNG de l'état quantique.

tensor

tensor(other)

GitHub

Retourne le produit tensoriel état self ⊗ other.

Paramètres

other (DensityMatrix) – un objet d'état quantique.

Retours

l'opérateur de produit tensoriel self ⊗ other.

Type de retour

DensityMatrix

Augmentations

QiskitError – si « autre » n'est pas un état quantique.

to_dict

to_dict(decimals=None)

GitHub

Convertir la matrice de densité en forme de dictionnaire.

Cette représentation du dictionnaire utilise une notation de type Ket où les clés du dictionnaire sont des chaînes de caractères pour les vecteurs de base du sous-système. Si un sous-système a une dimension supérieure à 10, des virgules sont insérées entre les nombres entiers afin de pouvoir distinguer les sous-systèmes.

Paramètres

decimals (None or int) – le nombre de décimales à arrondir. Si None, aucun arrondi n'est effectué (par défaut : None).

Retours

la forme dictionnaire de l'adresse DensityMatrix.

Type de retour

dict

Exemples

La forme cétale d'une matrice de densité à 2 qubits rho= ⁣0 ⁣0rho = |-\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)
}

Pour les sous-systèmes non quantiques, la plage de nombres entiers peut aller de 0 à 9. Par exemple, dans un système qutrit

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

Pour les grandes dimensions des sous-systèmes, des délimiteurs sont nécessaires. L'exemple suivant concerne un système à 20 dimensions composé d'un qubit et d'un qudit à 10 dimensions.

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

Convertir en opérateur

Type de retour

Opérateur

to_statevector

to_statevector(atol=None, rtol=None)

GitHub

Renvoie un vecteur d'état à partir d'une matrice de densité pure.

Paramètres

  • atol (float) – Tolérance absolue pour le contrôle de la validité de l'opération.
  • rtol (float) – Tolérance relative pour le contrôle de la validité de l'opération.

Retours

Le vecteur d'état correspondant à la matrice de densité pure.

Correspond au vecteur propre de la seule valeur propre non nulle.

Type de retour

Vecteur d'état

Augmentations

QiskitError – si l'état n'est pas pur.

trace

trace()

GitHub

Retourne la trace de la matrice de densité.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.