Aller au contenu principal

Représenter les états quantiques

Versions des packages

Le code de cette page a été développé avec les dépendances suivantes. Nous recommandons d'utiliser ces versions ou des versions plus récentes.

qiskit[all]~=2.3.0

Dans de nombreuses situations — apprentissage ou débogage, par exemple — il est utile de visualiser l'état d'un ordinateur quantique. On suppose ici que tu disposes déjà d'un état particulier, obtenu par simulation ou par tomographie d'état. Il n'est possible de visualiser que les états de petits systèmes quantiques.

Utiliser la sortie des fonctions

Toutes les fonctions de cette page renvoient des objets enrichis. Lorsque la dernière ligne d'une cellule de code produit ces objets, les notebooks Jupyter les affichent sous la cellule. Si tu appelles ces fonctions dans d'autres environnements ou dans des scripts, tu devras afficher ou enregistrer les sorties explicitement.

La plupart des fonctions renvoient des images, qui sont des objets matplotlib.Figure. Deux options s'offrent à toi :

  • Appelle .show() sur l'objet renvoyé pour ouvrir l'image dans une nouvelle fenêtre (à condition que le backend matplotlib configuré soit interactif).
  • Appelle .savefig("out.png") pour enregistrer la figure dans out.png dans le répertoire de travail courant. La méthode savefig() accepte un chemin, ce qui te permet d'ajuster l'emplacement et le nom du fichier de sortie. Par exemple : plot_state_city(psi).savefig("out.png").

Les sorties LaTeX sont des objets IPython.display.Latex. La meilleure option dans un environnement non-Jupyter est d'éviter cette sortie, soit en affichant l'état sous forme textuelle, soit en passant au rendu latex_source pour obtenir une chaîne source LaTeX.

Un état quantique est soit une matrice densité ρ\rho (matrice hermitienne), soit un vecteur d'état ψ|\psi\rangle (vecteur complexe). La matrice densité est liée au vecteur d'état par

ρ=ψψ,\rho = |\psi\rangle\langle \psi|,

et est plus générale, car elle peut représenter des états mixtes (somme positive de vecteurs d'état)

ρ=kpkψkψk.\rho = \sum_k p_k |\psi_k\rangle\langle \psi_k |.

Qiskit représente les états quantiques via les classes Statevector et DensityMatrix, et fournit de nombreuses fonctions de visualisation. Consulte les sections qui suivent la cellule de code ci-dessous pour voir comment les différentes fonctions de visualisation de Qiskit représentent l'état quantique suivant.

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit
from math import pi
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector

# Create a Bell state for demonstration
qc = QuantumCircuit(2)
qc.h(0)
qc.crx(pi / 2, 0, 1)
psi = Statevector(qc)

Bien que ce ne soit pas techniquement un « tracé », Qiskit peut générer des représentations LaTeX des objets Statevector et DensityMatrix qui s'affichent élégamment dans les notebooks Jupyter. Ces représentations suivent les conventions mathématiques standard pour écrire les états quantiques. Pour en savoir plus, consulte Bases de l'information quantique : Systèmes simples.

Les vecteurs d'état utilisent par défaut la « notation ket », tandis que les matrices densité sont affichées sous forme de matrice 2×2.

Tu peux aussi remplacer "latex" par "latex_source" pour obtenir la chaîne LaTeX brute.

psi.draw("latex")  # psi is a Statevector object

2200+1201i211\frac{\sqrt{2}}{2} |00\rangle+\frac{1}{2} |01\rangle- \frac{i}{2} |11\rangle

from qiskit.quantum_info import DensityMatrix

DensityMatrix(psi).draw("latex") # convert to a DensityMatrix and draw
[122402i424140i400002i4i4014] \begin{bmatrix} \frac{1}{2} & \frac{\sqrt{2}}{4} & 0 & \frac{\sqrt{2} i}{4} \\ \frac{\sqrt{2}}{4} & \frac{1}{4} & 0 & \frac{i}{4} \\ 0 & 0 & 0 & 0 \\ - \frac{\sqrt{2} i}{4} & - \frac{i}{4} & 0 & \frac{1}{4} \\ \end{bmatrix}
from qiskit.visualization import plot_state_city

plot_state_city(psi)
# Alternative: psi.draw("city")

Output of the previous code cell

from qiskit.visualization import plot_state_hinton

plot_state_hinton(psi)
# Alternative: psi.draw("hinton")

Output of the previous code cell

from qiskit.visualization import plot_state_paulivec

plot_state_paulivec(psi)
# Alternative: psi.draw("paulivec")

Output of the previous code cell

from qiskit.quantum_info import SparsePauliOp

SparsePauliOp.from_operator(psi)
SparsePauliOp(['II', 'IX', 'XY', 'YI', 'YX', 'YZ', 'ZI', 'ZX', 'ZZ'],
coeffs=[ 0.25 +0.j, 0.1767767+0.j, -0.1767767+0.j, -0.125 +0.j,
-0.1767767+0.j, 0.125 +0.j, 0.125 +0.j, 0.1767767+0.j,
0.125 +0.j])
from qiskit.visualization import plot_state_qsphere

plot_state_qsphere(psi)
# Alternative: psi.draw("qsphere")

Output of the previous code cell

from qiskit.visualization import plot_bloch_multivector

plot_bloch_multivector(psi)
# Alternative: psi.draw("bloch")

Output of the previous code cell

Options des fonctions de tracé d'état

Toutes les fonctions de tracé d'état acceptent les arguments suivants (à l'exception du rendu LaTeX, qui ne renvoie pas de figure Matplotlib, et de plot_state_qsphere, qui n'accepte que figsize) :

  • title (str) : une chaîne de caractères pour le titre du tracé, affiché en haut du graphique
  • figsize (tuple) : taille de la figure en pouces (largeur, hauteur)

Les fonctions plot_state_city et plot_state_paulivec acceptent également un argument color (liste de chaînes) spécifiant les couleurs des barres. Consulte la documentation de l'API pour plus d'informations.

Tu ne te souviens plus du nom de la fonction de tracé dont tu as besoin ? Essaie de demander à l'assistant de code Qiskit.

Prochaines étapes

Recommandations