דלג לתוכן הראשי

ציור מצבים קוונטיים

Package versions

The code on this page was developed using the following requirements. We recommend using these versions or newer.

qiskit[all]~=2.3.0

במצבים רבים — כגון למידה או ניפוי שגיאות — עוזר לדמיין את המצב של מחשב קוונטי. כאן אנחנו מניחים שכבר יש לך מצב מסוים מסימולציה או טומוגרפיית מצב. ניתן לצפות במצבים של מערכות קוונטיות קטנות בלבד.

שימוש בפלט של פונקציות

כל הפונקציות בדף זה מחזירות אובייקטים עשירים. כאשר השורה האחרונה בתא קוד מפיקה אובייקטים אלה, מחברות Jupyter מציגות אותם מתחת לתא. אם תקרא לפונקציות האלה בסביבות אחרות או בסקריפטים, תצטרך להציג או לשמור את הפלטים במפורש.

רוב הפונקציות מחזירות תמונות, שהן אובייקטים של matplotlib.Figure. שתי אפשרויות הן:

  • קרא .show() על האובייקט המוחזר כדי לפתוח את התמונה בחלון חדש (בהנחה שה-backend של matplotlib שהגדרת הוא אינטראקטיבי).
  • קרא .savefig("out.png") כדי לשמור את הדמות ב-out.png בתיקיית העבודה הנוכחית. המתודה savefig() מקבלת נתיב, כך שתוכל לשנות את המיקום ושם הקובץ שבו אתה שומר את הפלט. לדוגמה, plot_state_city(psi).savefig("out.png").

פלטי ה-LaTeX הם אובייקטים של IPython.display.Latex. האפשרות הטובה ביותר בסביבה שאינה Jupyter היא להימנע מפלט זה, על ידי הדפסת המצב לייצוג טקסטואלי, או מעבר ל-drawer מסוג latex_source שמחזיר מחרוזת מקור LaTeX.

מצב קוונטי הוא או מטריצת צפיפות ρ\rho (מטריצה הרמיטית) או וקטור מצב ψ|\psi\rangle (וקטור מרוכב). מטריצת הצפיפות קשורה לוקטור המצב על ידי

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

והיא כללית יותר, שכן היא יכולה לייצג מצבים מעורבים (סכום חיובי של וקטורי מצב)

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

Qiskit מייצגת מצבים קוונטיים דרך מחלקות Statevector ו-DensityMatrix ומספקת פונקציות ויזואליזציה רבות. עיין בסעיפים שאחרי תא הקוד הבא כדי לראות כיצד פונקציות הויזואליזציה השונות של Qiskit מציירות את המצב הקוונטי הבא.

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

אמנם זה לא בדיוק "ציור", אך Qiskit יכולה לרנדר ייצוגי LaTeX של אובייקטים מסוג Statevector ו-DensityMatrix שנראים יפה במחברות Jupyter. אלה עוקבים אחר המוסכמות המתמטיות הסטנדרטיות לכתיבת מצבים קוונטיים. קרא עוד ביסודות המידע הקוונטי: מערכות יחידות.

וקטורי מצב מוגדרים כברירת מחדל ל"סימון ket", בעוד מטריצות צפיפות מוצגות כמטריצה 2×2.

ניתן גם להחליף את "latex" ב-"latex_source" כדי לקבל את מחרוזת ה-LaTeX הגולמית.

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

אפשרויות לפונקציות ציור מצב

כל פונקציות ציור המצב מקבלות את הארגומנטים הבאים (למעט ה-drawer של LaTeX, שאינו מחזיר דמות Matplotlib, ו-plot_state_qsphere, שמקבלת רק figsize):

  • title (str): מחרוזת לכותרת הציור, המוצגת בראש הציור
  • figsize (tuple): גודל הדמות באינצ'ים (רוחב, גובה)

הפונקציות plot_state_city ו-plot_state_paulivec מקבלות גם ארגומנט color (רשימת מחרוזות) המציין את צבעי העמודות. עיין בתיעוד ה-API לקבלת מידע נוסף.

Can't remember the name of the plotting function you need? Try asking Qiskit Code Assistant.

הצעדים הבאים

המלצות