ציור מצבים קוונטיים
Package versions
The code on this page was developed using the following requirements. We recommend using these versions or newer.
qiskit[all]~=2.4.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.
מצב קוונטי הוא או מטריצת צפיפות (מטריצה הרמיטית) או וקטור מצב (וקטור מרוכב). מטריצת הצפיפות קשורה לוקטור המצב על ידי
והיא כללית יותר, שכן היא יכולה לייצג מצבים מעורבים (סכום חיובי של וקטורי מצב)
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)
- LaTeX
- City
- Hinton
- Pauli vector
- Qsphere
- Bloch
אמנם זה לא בדיוק "ציור", אך Qiskit יכולה לרנדר ייצוגי LaTeX של אובייקטים מסוג Statevector ו-DensityMatrix שנראים יפה במחברות Jupyter. אלה עוקבים אחר המוסכמות המתמטיות הסטנדרטיות לכתיבת מצבים קוונטיים. קרא עוד ביסודות המידע הקוונטי: מערכות יחידות.
וקטורי מצב מוגדרים כברירת מחדל ל"סימון ket", בעוד מטריצות צפיפות מוצגות כמטריצה 2×2.
ניתן גם להחליף את "latex" ב-"latex_source" כ די לקבל את מחרוזת ה-LaTeX הגולמית.
ציור זה מציג את החלקים הממשיים והמדומים של כל אלמנט במטריצת הצפיפות בשני גרפי עמודות תלת-ממדיים. הוא נקרא ציור "city" מפני שהעמודות דומות לגורדי שחקים בעיר. למצב שאנחנו מציירים יש מטריצת הצפיפות הבאה.
ראה בתיעוד ה-API לקבלת מידע נוסף.
ציור זה דומה מאוד לציור "city", אך גודל כל אלמנט מיוצג על ידי גודל של ריבוע ולא על ידי גובה עמודה. ריבועים לבנים מייצגים אלמנטים עם ערכים חיוביים, וריבועים שחורים מייצגים אלמנטים עם ערכים שליליים. למצב שאנחנו מציירים יש מטריצת הצפיפות הבאה.
ראה בתיעוד ה-API לקבלת מידע נוסף.
אובזרבל הוא דרך למדוד מצב קוונטי כך שתוצאות המדידה האפשריות הן מספרים ממשיים. ערך הציפייה של התוצאה ידוע גם כערך הציפייה של האובזרבל על אותו מצב, וניתן לחשוב עליו כממוצע של אינסוף תצפיות על אותו מצב.
מכפלות טנסוריות של מטריצ ות פאולי הן כולן אובזרבלים שמחזירים +1 או -1. ציור זה מציג את ערכי הציפייה של המצב על אופרטורי פאולי שונים כגרף עמודות. כל מטריצות הצפיפות ניתנות לכתיבה כסכום של מטריצות פאולי אלה, משוקללות לפי ערכי הציפייה שלהן.
לדוגמה, מצב זה ניתן לכתיבה כסכום של איברים:
ניתן גם לחשב את המקדמים האלה באמצעות SparsePauliOp.
ראה בתיעוד ה-API לקבלת מידע נוסף.
ה-"QSphere" הוא תצוגה ייחודית ל-Qiskit של מצב קוונטי שבה האמפליטודה והפאזה של כל אלמנט בוקטור מצב מסומנים על פני כדור. עובי כל נקודה מייצג את האמפליטודה, והצבע מייצג את הפאזה. עבור מצבים מעורבים יוצג כדור לכל רכיב.
ראה בתיעוד ה-API לקבלת מידע נוסף.
וקטור בלוך של מצב qubit הוא ערך הציפייה שלו באובזרבלים של פאולי X, Y ו-Z, ממופה לצירי X, Y ו-Z במרחב תלת-ממדי. ציור זה מקרין מצבים קוונטיים של qubits מרובים על מרחב ה-qubit היחיד ומצי ג כל qubit על כדור בלוך. ויזואליזציה זו מציגה רק את ערכי הציפייה של qubits בודדים. היא אינה יכולה להציג מתאמים בין qubits ולכן אינה יכולה לתאר באופן מלא מצבים קוונטיים שזורים.
ראה בתיעוד ה-API לקבלת מידע נוסף.
psi.draw("latex") # psi is a Statevector object