رسم الحالات الكمومية
إصدارات الحزم
تم تطوير الكود في هذه الصفحة باستخدام المتطلبات التالية. ننصح باستخدام هذه الإصدارات أو ما هو أحدث منها.
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.
الحالة الكمومية إما مصفوفة كثافة (مصفوفة هرميتية) أو متجه حالة (متجه مركب). ترتبط مصفوفة الكثافة بمتجه الحالة بالعلاقة:
وهي أكثر عمومية إذ تستطيع تمثيل الحالات المختلطة (مجموع موجب من متجهات الحالة):
يُمثل 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 لمزيد من المعلومات.
المشاهَدة (Observable) هي طريقة لقياس حالة كمومية بحيث تكون نتائج القياس المحتملة أعدادًا حقيقية. القيمة المتوقعة للناتج تُعرف أيضًا بـ"قيمة التوقع" للمشاهَدة على تلك الحالة، ويمكن التفكير فيها على أنها المتوسط لعدد لا ن هائي من ملاحظات تلك الحالة.
حاصل الضرب التنسوري لمصفوفات باولي جميعها مشاهَدات تُعيد القيمة +1 أو -1. يعرض هذا الرسم قيم التوقع للحالة على مؤثرات باولي المختلفة على شكل مخطط شريطي. يمكن كتابة جميع مصفوفات الكثافة كمجموع لمصفوفات باولي هذه، مُرجَّحةً بقيم توقعها.
على سبيل المثال، يمكن كتابة هذه الحالة كمجموع حدود:
يمكنك أيضًا حساب هذه المعاملات باستخدام SparsePauliOp.
اطلع على توثيق API لمزيد من المعلومات.
"QSphere" هو عرض مميز لـ Qiskit للحالة الكمومية، يُرسم فيه سعة وطور كل عنصر في متجه الحالة على سطح كرة. يمثل سمك كل نقطة السعة، ويمثل اللون الطور. أما للحالات المختلطة، فسيُعرض كرة لكل مكوِّن.
اطلع على توثيق API لمزيد من المعلومات.
متجه بلوخ لحالة كيوبت هو قيمة توقعه في مشاهَدات باولي X وY وZ، مُعيَّنة على المحاور X وY وZ في الفضاء ثلاثي الأبعاد. يُسقط هذا الرسم الحالات الكمومية متعددة الكيوبتات على فضاء الكيوبت الفردي، ويرسم كل كيوبت على كرة بلوخ. يعرض هذا التصور قيم التوقع للكيوبتات الفردية فقط، ولا يمكنه إظهار الارتباطات بين الكيوبتات، لذا لا يستطيع وصف الحالات الكمومية المتشابكة بشكل كامل.
اطلع على توثيق API لمزيد من المعلومات.
psi.draw("latex") # psi is a Statevector object
from qiskit.quantum_info import DensityMatrix
DensityMatrix(psi).draw("latex") # convert to a DensityMatrix and draw
from qiskit.visualization import plot_state_city
plot_state_city(psi)
# Alternative: psi.draw("city")
from qiskit.visualization import plot_state_hinton
plot_state_hinton(psi)
# Alternative: psi.draw("hinton")
from qiskit.visualization import plot_state_paulivec
plot_state_paulivec(psi)
# Alternative: psi.draw("paulivec")
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")
from qiskit.visualization import plot_bloch_multivector
plot_bloch_multivector(psi)
# Alternative: psi.draw("bloch")
خيارات دوال رسم الحالات
جميع دوال رسم الحالات تقبل المعاملات التالية (باستثناء drawer الخاص بـ LaTeX الذي لا يُعيد شكل Matplotlib، وplot_state_qsphere التي تقبل figsize فقط):
- title (str): سلسلة نصية لعنوان الرسم، تظهر في أعلاه
- figsize (tuple): حجم الشكل بالبوصة (العرض، الارتفاع)
تقبل الدالتان plot_state_city وplot_state_paulivec أيضًا معامل color (قائمة من السلاسل النصية) لتحديد ألوان الأعمدة. اطلع على توثيق API لمزيد من المعلومات.
الخطوات التالية
- هل تحتاج إلى مراجعة معلوماتك في المعلومات الكمومية؟ اطلع على دورة أساسيات المعلومات الكمومية على IBM Quantum Learning.
- اقرأ إرشادات المساهمة إذا أردت المساهمة في مشروع Qiskit SDK مفتوح المصدر.